連載
» 2004年06月18日 05時00分 公開

.NET TIPS:コンソール・アプリケーションで終了コードを返すには?

[遠藤孝信,デジタルアドバンテージ]
.NET TIPS
Insider.NET


「.NET TIPS」のインデックス

連載目次

 バッチ処理などで使用するコンソール・アプリケーションを作成する場合、バッチ処理側でアプリケーションが正しく終了したかどうかを判断するためには、アプリケーションの終了時に、そのアプリケーションがWindows OSへ「終了コード」を返す必要がある。

 例えば、mybatapp.exeというファイル名を持つコンソール・アプリケーションを作成した場合に、このアプリケーションが正常終了しなかったときに終了コードとして「100」を返すようになっていれば、次のようなバッチ・ファイルにより、それを判断することができる(通常、終了コードは、0で正常終了、0以外で異常終了を表す)。

@echo off
set msg=正常終了

mybatapp.exe
if %ERRORLEVEL%==100 set msg=異常終了

echo %msg%(終了コード:%ERRORLEVEL%)


mybatapp.exeを実行するバッチ・ファイル
バッチ・ファイル内では、最後に実行したプログラム(この場合にはmybatapp.exe)の終了コードが「%ERRORLEVEL%」にセットされる。このバッチ・ファイルでは、それが「100」の場合に「異常終了」のメッセージを表示する。

 本稿では、このような用途のためにアプリケーションから終了コードを返す方法についてまとめる。

Mainメソッドの戻り値を利用する

 アプリケーションから終了コードを返す最も基本的な方法は、プログラムのエントリ・ポイントであるMainメソッドの戻り値を利用する方法である。

class MyBatchApp {
  static int Main() {
    return 100;
  }
}

Mainメソッドの戻り値として終了コードを返すC#のサンプル・プログラム

Module MyBatchApp
  Function Main() As Integer
    Return 100
  End Function
End Module

Mainメソッドの戻り値として終了コードを返すVB.NETのサンプル・プログラム

 この場合には、Mainメソッドの型をint型にしておく必要がある。

Environment.Exitメソッドを利用する

 「TIPS:コンソール・アプリケーションを途中で終了するには?」で紹介しているように、アプリケーションはEnvironmentクラス(System名前空間)のExitメソッドを利用してプログラムを途中で終了することができる。このExitメソッドでは、パラメータに終了コードを指定できる。

using System;

class MyBatchApp {
  static void Main() {
    Environment.Exit(100);
  }
}

Environment.Exitメソッドで終了コードを返すC#のサンプル・プログラム

Imports System

Module MyBatchApp
  Sub Main()
    Environment.Exit(100)
  End Sub
End Module

Environment.Exitメソッドで終了コードを返すVB.NETのサンプル・プログラム

 もちろん、Environment.ExitメソッドはMainメソッド以外の任意のメソッド内で呼び出すことができる。

Environment.ExitCodeプロパティを利用する

 EnvironmentクラスのExitCodeプロパティに終了コードをセットしておき、プログラムを終了してもWindows OSに終了コードを返すことができる。

using System;

class MyBatchApp {
  static void Main() {
    Environment.ExitCode = 100;
  }
}

Environment.ExitCodeプロパティで終了コードを返すC#のサンプル・プログラム

Imports System

Module MyBatchApp
  Sub Main()
    Environment.ExitCode = 100
  End Sub
End Module

Environment.ExitCodeプロパティで終了コードを返すVB.NETのサンプル・プログラム

 ExitCodeプロパティは終了コードの取得/設定を行うだけなので、ほとんどの場合には、先のExitメソッドでことは足りると思われる。

VB.NETのEndステートメントには注意が必要

 VB.NETにはプログラムを終了させるためのEndステートメントが用意されているが、これを使用する場合には注意が必要だ。なぜなら、このステートメントを使用した場合には終了コードが必ず「0」となるためだ。

 Endステートメントの処理は、Openステートメントにより開かれているファイルをすべて閉じた後、「Environment.Exit(0)」を呼び出してプログラムを終了させるのと同等である。

カテゴリ:クラス・ライブラリ 処理対象:コンソール・アプリケーション
使用ライブラリ:Environmentクラス(System名前空間)
関連TIPS:コンソール・アプリケーションを途中で終了するには


「.NET TIPS」のインデックス

.NET TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。