TimberLandChapelのTech Blog

TimberLandChapel が提供する技術Tips,思いつきメモ,雑感ブログです。
Office 互換リボン Release 1.0 をリリースしました。

購読

今期のアンケート

INETAJ

Microsoft

SQL Server

TLC.com

クリエイティブ・コモンズ

情報処理関係官公庁

6月 2006 - 投稿

シナリオと要件

.NET アセンブリの終了コードが状況によってどのように変わるかを実験します。

この記事は
.NET Framework 1.1 (version 1.1.4322.573) に基づいて記述しています。

状況によるアプリケーションの終了コードの違い

[System.Environment.ExitCode] を利用することによって,アプリケーションから終了コード返すことができます。
既定値は 0 です。

この [ExitCode] はアプリケーションを異常終了させるなどするとどんな値が返ってくるのでしょうか?
実験してみましょう。

[Main メソッド] のみを実行する単純なアプリケーションを構築して,このアプリケーションに以下の状況を適用して終了コードを確認します。

  • 何もしない
  • 明示的な値を設定する
  • アプリケーション内でトラップされない例外を発生させる
  • アプリケーションをタスクマネージャから強制終了させる

終了コードを設定するアプリケーション
Public Class TestExitCode
    Public Shared Sub Main()
 
        ' 何もしない場合は次の行をコメントアウト
        System.Environment.ExitCode = 100
 
        ' 例外を発生させる場合は次の行をコメント解除
        'Throw New ApplicationException
    End Sub
End Class

  ヒント 
終了コードを返す他の方法について
[System.Environment.ExitCode] を利用する方法以外にも,
  • [Main メソッド] の戻り値を利用する。
  • [System.Environment.Exit] の引数を利用する。
方法があります。

結果

アプリケーションで特に何もしなければ,既定の値である 0 がもちろん返ります。

一方,トラップされない例外が発生した場合や,アプリケーションを異常終了させた場合は特別な値が返ってきます。
これらの値は,明示的に終了コードを設定しても上書きされてしまいます

状況コード
終了コードをアプリケーションで制御しない0
終了コードを明示的に設定する任意の値
トラップされない例外が発生した場合-532,459,699
0xE0434F4D
アプリケーションを強制的に終了した場合-1,073,741,510
0xC000013A
終了コード管理の提案

以上を踏まえて,カスタムアプリケーションで終了コードを使用する際の基準は以下のようにルールを設定してはどうでしょうか。

コード用途
0正常終了
正の数原則使用しない
アプリケーションの終了ステータスを定義したい場合は,1,2,4,8 とビットフラグ化する
負の数異常終了
-532,459,699
0xE0434F4D
想定外の例外が発生
原則例外処理は行うこと
-1,073,741,510
0xC000013A
アプリケーションを強制的に終了した場合
Int32.MinValueアプリケーションの開始と共に設定する初期値
これを用いることによって,終了コードの設定し忘れをデバッグ時に確認できる
Posted 投稿者 timberlandchapel | : no comments
タグ :

IT-Pro の SYU さんが TLC.com に参加してくれました。

TLC 自身は根が Developer なので(Windows Server System ですが。。。),プラットフォームに関することはあまり多くはサポートできませんが,これからは SYU さんにお願いします。

とりあえずは,Virtual Server 2005 R2 の連載を持ってくれたようです。

今後ともよろしくお願いします。

 

SYU の作業ノート
http://blogs.timberlandchapel.com/blogs/syu/default.aspx

VirtualServer 2005 R2 -導入から起動まで-
http://blogs.timberlandchapel.com/blogs/syu/archive/2006/06/18/815.aspx

TLC の4コマ劇場に「何かの名残」を追加しました。

フルサイズはこちら ↓

http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/832.aspx

4コマのバックナンバーはこちら ↓

http://timberlandchapel.com/commic.html

Posted 投稿者 timberlandchapel | : no comments

SSIS のメインステージは [OLE DB] ですが,

まだまだ [ODBC] を使用しなければいけないというシナリオはあると思います。

困ったことに,素直に [ODBC 接続] をデータフローにパイプすることができないため,まとめました。

ODBC 接続を利用してデータフロータスクにデータをパイプする
http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/827.aspx

[SSIS] のライトニングコンテンツに記事を追加しました。

テキストファイルの SSIS ログを実行時の日付で構成する
http://blogs.timberlandchapel.com/blogs/timberlandchapel/articles/810.aspx