我的控制台应用程序中有以下错误处理程序
主要流程:
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(ErrorHandler);
处理程序:
static void ErrorHandler(object sender, UnhandledExceptionEventArgs args)
{
Exception e = (Exception)args.ExceptionObject;
... Loging Error ...
//Environment.Exit(?);
}
问题是记录了错误,但在应用程序失败并显示窗口弹出窗口(应用程序没有响应)之后。
所以我想添加Environment.Exit()来防止这种行为,但是如何从异常中指定exitCode?我不想设置 Exit(0) (这意味着一切都好),因为我还想在触发此脚本的调度程序应用程序中看到错误(仅显示发生了某些错误,异常已记录的信息)。
谢谢
最佳答案
大多数程序员只是使用Environment.Exit(1)。几乎总是工作得很好。但这在技术上是不正确的,如果程序因异常而终止,那么其退出代码通常与底层异常错误代码相同。事件处理程序不应更改该行为。
正确地做起来很困难:
Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(e));
这里有一个 FUD 因素,您不能完全信任具有未设置错误代码的自定义异常对象的库。仍然可以,后备是 E_FAIL。
关于c# - 从异常处理程序获取 ExitCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32394877/