.NET TIPS

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

デジタルアドバンテージ
2004/06/18

 バッチ処理などで使用するコンソール・アプリケーションを作成する場合、バッチ処理側でアプリケーションが正しく終了したかどうかを判断するためには、アプリケーションの終了時に、そのアプリケーションが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)」を呼び出してプログラムを終了させるのと同等である。End of Article

カテゴリ:クラス・ライブラリ 処理対象:コンソール・アプリケーション
使用ライブラリ:
Environmentクラス(System名前空間)
関連TIPS:コンソール・アプリケーションを途中で終了するには
 
この記事と関連性の高い別の.NET TIPS
コンソール・アプリケーションを途中で終了するには?
ほかのアプリを実行して終了コードを得るには?
Windowsアプリケーション終了時に確認ダイアログを表示するには?
システムトレイ(タスクトレイ)にアイコンを表示するには?
ほかのアプリケーションを実行してその終了を待つには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH