No, non sempre. 255 è un numero Unix, normalmente prodotto uscendo con -1, non chiaro come lo hai visto. Su Windows, un processo .NET normalmente esce con il valore del codice di eccezione SEH, quello che ha provocato il crash e la chiusura del processo. Di solito -532462766 (noto anche come 0xE0434352) per un'eccezione gestita. Le ultime 3 coppie esadecano incantesimo "CCR", un acronimo il cui significato è perso nella nebbia del tempo, dichiarato come EXCEPTION_COMPLUS in corexcep.h. Esempio di domanda is here.
Un programma ben educato sottoscrive AppDomain.CurrentDomain.UnhandledException e fornisce un codice di uscita migliore quando chiama Environment.Exit(), come quello prodotto da Marshal.GetHRForException(). Otterrai un codice di uscita che corrisponde al tipo di eccezione gestita, i valori per i tipi di eccezione standard sono documentati nel file SDK CorError.h.
echo %errorlevel%
E non ha visto che nella domanda prima. % errorlevel% può avere solo un valore compreso tra 0 e 255, una restrizione che risale ai giorni MS-Dos. Dal momento che il codice di eccezione SEH sarà sempre più grande, normalmente vedresti sempre 255. Solo un modo corretto di usare% errorlevel% è di supporre che il programma non sia riuscito quando non è 0. A meno che tu non abbia una documentazione specifica dall'autore del programma.
fonte
2016-02-09 14:49:21
Non ho trovato nulla in [ECMA-335] (http://www.ecma-international.org/publications/standards/Ecma-335.htm), quindi suppongo che il codice di uscita del runtime non sia standardizzato per lo scenario di un'eccezione non gestita. – Gene
Hmm, per me su Windows 10.0.14393, 'ECHO% ERRORLEVEL%' output '-532462766'. – binki