Environment.ExitCode Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает код выхода из процесса.
public:
static property int ExitCode { int get(); void set(int value); };
public static int ExitCode { get; set; }
member this.ExitCode : int with get, set
Public Shared Property ExitCode As Integer
Значение свойства
32-битовое целое число со знаком, содержащее код выхода. Значение по умолчанию 0 (нуль), что соответствует успешно выполненному процессу.
Примеры
Ниже приведено простое приложение с именем Double.exe, которое удвоит целочисленное значение, передаваемое ему в качестве аргумента командной строки. Значение присваивает свойствам коды ExitCode ошибок, чтобы указать условия ошибки. Обратите внимание, что для успешной компиляции примера необходимо добавить ссылку на сборку System.Numerics.dll.
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;
}
}
}
open System
open System.Numerics
let ERROR_BAD_ARGUMENTS = 0xA0
let ERROR_ARITHMETIC_OVERFLOW = 0x216
let ERROR_INVALID_COMMAND_LINE = 0x667
let args = Environment.GetCommandLineArgs()
if args.Length = 1 then
Environment.ExitCode <- ERROR_INVALID_COMMAND_LINE
else
match BigInteger.TryParse args[1] with
| true, value ->
if value <= bigint Int32.MinValue || value >= bigint Int32.MaxValue then
Environment.ExitCode <- ERROR_ARITHMETIC_OVERFLOW
else
printfn $"Result: {value * 2I}"
| _ ->
Environment.ExitCode <- ERROR_BAD_ARGUMENTS
Imports System.Numerics
Module Example
Private Const ERROR_BAD_ARGUMENTS As Integer = &hA0
Private Const ERROR_ARITHMETIC_OVERFLOW As Integer = &h216
Private Const ERROR_INVALID_COMMAND_LINE As Integer = &h667
Public Sub Main()
Dim args() As String = Environment.GetCommandLineArgs()
If args.Length = 1 Then
Environment.ExitCode = ERROR_INVALID_COMMAND_LINE
Else
Dim value As BigInteger = 0
If BigInteger.TryParse(args(1), value) Then
If value <= Int32.MinValue Or value >= Int32.MaxValue
Environment.ExitCode = ERROR_ARITHMETIC_OVERFLOW
Else
Console.WriteLine("Result: {0}", value * 2)
End If
Else
Environment.ExitCode = ERROR_BAD_ARGUMENTS
End If
End If
End Sub
End Module
Затем пример можно вызвать из пакетного файла, например из следующего, что делает коды ошибок доступными с помощью 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
, возвращающая целое число.
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;
}
}
open System
open System.Numerics
let ERROR_SUCCESS = 0
let ERROR_BAD_ARGUMENTS = 0xA0
let ERROR_ARITHMETIC_OVERFLOW = 0x216
let ERROR_INVALID_COMMAND_LINE = 0x667
[<EntryPoint>]
let main _ =
let args = Environment.GetCommandLineArgs()
if args.Length = 1 then
ERROR_INVALID_COMMAND_LINE
else
match BigInteger.TryParse args[1] with
| true, value ->
if value <= bigint Int32.MinValue || value >= bigint Int32.MaxValue then
ERROR_ARITHMETIC_OVERFLOW
else
printfn $"Result: {value * 2I}"
ERROR_SUCCESS
| _ ->
ERROR_BAD_ARGUMENTS
Imports System.Numerics
Module Example
Private Const ERROR_SUCCESS As Integer = 0
Private Const ERROR_BAD_ARGUMENTS As Integer = &hA0
Private Const ERROR_ARITHMETIC_OVERFLOW As Integer = &h216
Private Const ERROR_INVALID_COMMAND_LINE As Integer = &h667
Public Function Main() As Integer
Dim args() As String = Environment.GetCommandLineArgs()
If args.Length = 1 Then
Return ERROR_INVALID_COMMAND_LINE
Else
Dim value As BigInteger = 0
If BigInteger.TryParse(args(1), value) Then
If value <= Int32.MinValue Or value >= Int32.MaxValue
Return ERROR_ARITHMETIC_OVERFLOW
Else
Console.WriteLine("Result: {0}", value * 2)
End If
Else
Return ERROR_BAD_ARGUMENTS
End If
End If
Return ERROR_SUCCESS
End Function
End Module
Комментарии
Main
Если метод возвращаетсяvoid
, это свойство можно использовать для задания кода выхода, который будет возвращен вызывающей среде. Если Main
не возвращается void
, это свойство игнорируется. Начальное значение этого свойства равно нулю.
Предупреждение
Свойство ExitCode является 32-разрядным целым числом со знаком. Чтобы предотвратить возврат отрицательного кода выхода свойства, не следует использовать значения, превышающие или равные 0x80000000.
Используйте ненулевое число, чтобы указать ошибку. В приложении можно определить собственные коды ошибок в перечислении и вернуть соответствующий код ошибки на основе сценария. Например, возвращает значение 1, указывающее, что необходимый файл отсутствует и значение 2, указывающее, что файл находится в неправильном формате. Список кодов выхода, используемых операционной системой Windows, см. в Windows документации по системным кодам ошибок.