2011-03-09 22 views
12

Estoy planeando usar el código de retorno del ejecutable de C# en uno de mis scripts de shell. Tengo dos opciones:Usando Environment.ExitCode versus return int desde Main

devolver un valor int del método principal

class MainReturnValTest 
{ 
    static int Main() 
    { 
     //... 
     return 0; 
    } 
} 

(OR)

Usando Environment.Exit con un código de salida

class MainReturnValTest 
{ 
    static void Main() 
    { 
     //... 
     Enviroment.Exit(exitCode); 
    } 
} 

¿Está bien usar cualquiera de las anteriores w ¿Puede devolver el valor del ejecutable? ¿O es uno de ellos preferido sobre el otro?

+0

posible duplicado de [¿Cuándo debería uno usar Environment.Exit para terminar una aplicación de consola?] (Http://stackoverflow.com/questions/692323/when-should-one-use-environment-exit-to-terminate- a-console-application) – nawfal

+0

Downvoted porque el título de esta pregunta menciona 'Environment.ExitCode', pero el texto de la pregunta se refiere a' Environment.Exit() '. Esos no son lo mismo. – Dan

Respuesta

16

Environment.Exit() es un aborto grosero. Al instante termina el proceso. Úselo solo cuando detecte una falla grave, es apropiado en un controlador de eventos AppDomain.UnhandledException, por ejemplo. Que se ejecuta cuando su programa está por terminar debido a una excepción no controlada.

Cuál es su ventaja: las excepciones son una buena manera de señalar condiciones inusuales que deberían terminar el programa con un código de salida que no es cero. De hecho, se establece automáticamente en el valor de la propiedad HResult de la excepción. No se requiere código

7

Si está escribiendo un programa lineal, entonces regresar desde Main está bien. Si tiene una lógica más compleja, o posiblemente otros hilos de ejecución, puede usar Exit(returnCode). Ambas formas serán equivalentes a tu script de shell.

+1

Excepto que Environment.Exit() es equivalente a eliminar la energía del programa mientras aún se está ejecutando. Debe evitarse a toda costa, como dice el siguiente póster. – debracey

1

La diferencia radica en que necesita manejar el evento en una aplicación principal según el estado de salida de otra aplicación. La devolución se usa principalmente en una aplicación, mientras que la salida se utiliza para finalizar de repente una aplicación. Aquí el estado de salida puede ser utilizado por otra aplicación para decidir sobre sus próximos pasos.

La devolución se usa cuando devuelve un valor a otra función desde donde se llama el código. o para indicar el final de la ejecución del código en algún evento.

También puede ver así:

1) Un retorno termina una función, que podría ser main(); una salida se usa para finalizar el programa.

2) Finalizar un programa con un determinado valor de retorno no puede ser interpretado implícitamente por otra aplicación, pero el estado de salida se puede utilizar para decidir sobre la implementación de un código.