处理未处理的异常问题

我想为我的代码中可能未捕获的所有意外异常设置一些处理程序。在Program.Main()我使用以下代码:


AppDomain.CurrentDomain.UnhandledException

    += new UnhandledExceptionEventHandler(ErrorHandler.HandleException);

但是它没有按我预期的那样工作。当我在调试模式下启动应用程序并引发异常时,它确实调用了处理程序,但是此后,Visual Studio中的异常帮助程序弹出了,好像该异常发生时没有进行任何处理。我在处理程序中尝试了Application.Exit(),但效果不佳。


我想实现的是,异常由我的处理程序处理,然后应用程序关闭良好。还有其他方法吗?还是我以错误的方式使用了上面的代码?


九州编程
浏览 530回答 3
3回答

慕尼黑的夜晚无繁华

这是因为您是通过Visual Studio在“调试”模式下运行它的。如果您在其他地方发布和安装应用程序,则只会处理全局异常处理程序。

米琪卡哇伊

注意,未处理的异常仍然非常致命。您只能将其真正用于记录日志,或者可能需要匆忙关闭。这或Application.ThreadException不能用作错误的全局接收器。更好的方法是添加适当的处理-例如,围绕您的整个Main()逻辑。请注意,即使这样也无法捕获一些异常,例如表单加载期间的错误(这种异常特别令人讨厌-您可以使用附加的调试器来捕获它们,但并非没有)。
打开App,查看更多内容
随时随地看视频慕课网APP