当C# .Net控制台应用程序由于未处理的异常终止时,是否有规则确定返回哪个退出代码,或者总是使用255?
我无法找到相关文档。一个简单的控制台应用程序执行throw new Exception()
,将以退出代码255死亡。我想知道是否可以安全地假定所有未处理的异常都将返回相同的错误代码,还是需要注意不同情况下的变化/特例。
C:\Temp\> ThrowsExceptionConsoleApp.exe
C:\Temp\> echo %errorlevel%
255
当C# .Net控制台应用程序由于未处理的异常终止时,是否有规则确定返回哪个退出代码,或者总是使用255?
我无法找到相关文档。一个简单的控制台应用程序执行throw new Exception()
,将以退出代码255死亡。我想知道是否可以安全地假定所有未处理的异常都将返回相同的错误代码,还是需要注意不同情况下的变化/特例。
C:\Temp\> ThrowsExceptionConsoleApp.exe
C:\Temp\> echo %errorlevel%
255
echo %errorlevel%
以前的问题中没有看到这一点。 %errorlevel% 只能有0到255之间的值,这限制可以追溯到 MS-Dos 时代。由于 SEH 异常代码总是更大,因此通常会看到 255。使用 %errorlevel% 的唯一合理方式是在它不为0时假定程序失败。除非您得到了程序作者的具体文档。