当未处理的exception终止执行时退出代码?
当C#.Net控制台应用程序由于未处理的exception而终止时,是否有规则确定返回哪个退出代码或始终使用255?
我一直无法找到相关文档。 一个简单的控制台应用程序执行throw new Exception()
死亡退出代码255.我想知道是否可以安全地假设所有未处理的exception将返回相同的错误代码或如果有变化/角落情况我需要是意识到。
C:Temp> ThrowsExceptionConsoleApp.exe C:Temp> echo %errorlevel% 255
不,不总是。 255是一个Unix编号,通常由-1退出生成,不清楚你是如何看到它的。 在Windows上,.NET进程通常以SEHexception代码值退出,该exception代码值使进程崩溃并终止。 通常为-532462766(又名0xE0434352)用于托管exception。 最后3个hex对拼写“CCR”,这个缩写词的意思在时间的迷雾中丢失,在corexcep.h中声明为EXCEPTION_COMPLUS。 示例问题在这里 。
一个表现良好的程序订阅AppDomain.CurrentDomain.UnhandledException,并在调用Environment.Exit()时提供更好的退出代码,就像Marshal.GetHRForException()生成的那样。 您将获得与托管exception类型匹配的退出代码,标准exception类型的值记录在CorError.h SDK文件中。
echo %errorlevel%
它在之前的问题中没有看到。 %errorlevel%只能有0到255之间的值,这个限制可以追溯到MS-Dos天。 由于SEHexception代码总是较大,因此通常总是看到255.只有使用%errorlevel%的合理方法是假定程序在不为0时失败。除非您从程序作者那里获得特定文档。
上述就是C#学习教程:当未处理的exception终止执行时退出代码?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/961305.html