英語で読む

次の方法で共有


Environment.ExitCode プロパティ

定義

プロセスの終了コードを取得または設定します。

C#
public static int ExitCode { get; set; }

プロパティ値

Int32

終了コードを格納している 32 ビット符号付き整数。 既定値は 0 (ゼロ) です。この値は、プロセスが成功して完了したことを意味します。

コマンド ライン引数として渡された整数値を 2 倍にする、Double.exeという名前の単純なアプリを次に示します。 この値は、エラー条件を示すためにエラー コードを ExitCode プロパティに割り当てます。 この例を正常にコンパイルするには、System.Numerics.dll アセンブリへの参照を追加する必要があることに注意してください。

C#
using System;
using System.Numerics;

public class Example
{
   private const int ERROR_BAD_ARGUMENTS = 0xA0;
   private const int ERROR_ARITHMETIC_OVERFLOW = 0x216;
   private const int ERROR_INVALID_COMMAND_LINE = 0x667;

   public static void Main()
   {
      string[] args = Environment.GetCommandLineArgs();
      if (args.Length == 1) {
         Environment.ExitCode = ERROR_INVALID_COMMAND_LINE;
      }
      else {
         BigInteger value = 0;
         if (BigInteger.TryParse(args[1], out value))
            if (value <= Int32.MinValue || value >= Int32.MaxValue)
               Environment.ExitCode = ERROR_ARITHMETIC_OVERFLOW;
            else
               Console.WriteLine("Result: {0}", value * 2);

         else
            Environment.ExitCode = ERROR_BAD_ARGUMENTS;
      }
   }
}

この例は、次のようなバッチ ファイルから呼び出すことができます。これにより、コマンドを使用してエラー コードに ERRORLEVEL アクセスできるようになります。

@echo off
Double.exe %1
if errorlevel 1639 goto NoArg
if errorlevel 534 goto Overflow
if errorlevel 160 goto BadArg
if errorlevel 0 echo Completed Successfully
goto :EOF

:NoArg
echo Missing argument
goto :EOF

:Overflow
echo Arithmetic overflow
goto :EOF

:BadArg
echo Invalid argument
goto :EOF

バッチ ファイルを呼び出すことによって生成される出力の例を次に示します。

>getdouble 123
Result: 246
Completed Successfully

>getdouble 5912323109093
Arithmetic overflow

>getdouble
Missing argument

>getdouble "a string"
Invalid argument

Double.exeのコードは関数内で次の例と同じですが、前者は戻り Main 値のないエントリ ポイントを定義していますが、この例では整数を返す名前の Main エントリ ポイントを定義します。

C#
using System;
using System.Numerics;

public class Example
{
   private const int ERROR_SUCCESS = 0;
   private const int ERROR_BAD_ARGUMENTS = 0xA0;
   private const int ERROR_ARITHMETIC_OVERFLOW = 0x216;
   private const int ERROR_INVALID_COMMAND_LINE = 0x667;

   public static int Main()
   {
      string[] args = Environment.GetCommandLineArgs();
      if (args.Length == 1) {
         return ERROR_INVALID_COMMAND_LINE;
      }
      else {
         BigInteger value = 0;
         if (BigInteger.TryParse(args[1], out value))
            if (value <= Int32.MinValue || value >= Int32.MaxValue)
               return ERROR_ARITHMETIC_OVERFLOW;
            else
               Console.WriteLine("Result: {0}", value * 2);

         else
            return ERROR_BAD_ARGUMENTS;
      }
      return ERROR_SUCCESS;
   }
}

注釈

メソッドが返voidされたMain場合は、このプロパティを使用して、呼び出し元の環境に返される終了コードを設定できます。 返voidされない場合Main、このプロパティは無視されます。 このプロパティの初期値は 0 です。

警告

プロパティは ExitCode 符号付き 32 ビット整数です。 このプロパティが負の終了コードを返さないようにするには、0x80000000以上の値を使用しないでください。

エラーを示すには、0 以外の数値を使用します。 アプリケーションでは、列挙体で独自のエラー コードを定義し、シナリオに基づいて適切なエラー コードを返すことができます。 たとえば、必要なファイルが存在しないことを示す値 1、ファイルの形式が間違っていることを示す値 2 を返します。 Windows オペレーティング システムで使用される終了コードの一覧については、Windowsドキュメントのシステム エラー コードを参照してください。

適用対象

製品 バージョン
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1