TimberLandChapelのTech Blog

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

購読

今期のアンケート

INETAJ

Microsoft

SQL Server

TLC.com

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

情報処理関係官公庁

【VB.NET】ExitCode に関する小ネタ
シナリオと要件

.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アプリケーションの開始と共に設定する初期値
これを用いることによって,終了コードの設定し忘れをデバッグ時に確認できる
Published 2006年6月28日 23:01 投稿者 timberlandchapel
タグ :

コメント

コメントはありません