Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Propiedad Environment.ExitCode

 

Publicado: octubre de 2016

Obtiene o establece el código de salida del proceso.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static int ExitCode { get; set; }

Valor de propiedad

Type: System.Int32

Un entero de 32 bits con signo que contiene el código de salida. El valor predeterminado es 0 (cero), lo que indica que el proceso se completó correctamente.

Si el Main método devuelve void, puede utilizar esta propiedad para establecer el código de salida que se devolverá al entorno que llama. Si Main no devuelve void, se omite esta propiedad. El valor inicial de esta propiedad es cero.

System_CAPS_warningAdvertencia

El ExitCode propiedad es un entero de 32 bits con signo. Para evitar que la propiedad devuelve un código de salida negativa, no debe utilizar valores mayores o iguales a 0 x 80000000.

Utilice un número distinto de cero para indicar un error. En la aplicación, puede definir sus propios códigos de error de la enumeración y devolver el código de error adecuado según el escenario. Por ejemplo, devolver un valor de 1 para indicar que el archivo requerido no está presente y un valor de 2 para indicar que el archivo está en un formato incorrecto. Para obtener una lista de códigos de salida utilizados por el sistema operativo Windows, consulte System Error Codes en la documentación de Windows.

La siguiente es una aplicación sencilla denominada Double.exe que duplica un valor entero que se pasa como un argumento de línea de comandos. El valor asigna los códigos de error para el ExitCode propiedad para indicar las condiciones de error. Tenga en cuenta que debe agregar una referencia al ensamblado System.Numerics.dll para compilar correctamente el ejemplo.

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;
      }
   }
}

The example can then be invoked from a batch file such as the following, which makes its error codes accessible by using the ERRORLEVEL command.


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

The following shows some sample output produced by invoking the batch file.

>getdouble 123>echo offResult: 246Completed Successfully>getdouble 5912323109093>echo offArithmetic overflow>getdouble>echo offMissing argument>getdouble "a string">echo offInvalid argument

Note that code for Double.exe is identical in function to the following example, except that the former defines an entry point named Main that has no return value, whereas this example defines an entry point named Main that returns an integer.

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;
   }
}

.NET Framework
Disponible desde 1.1
Silverlight
Disponible desde 2.0
Volver al principio
Mostrar: