提问人:SE12938683 提问时间:8/8/2023 最后编辑:Uwe KeimSE12938683 更新时间:8/8/2023 访问量:49
如何控制异常弹出行为?
How to control exception pop-up behavior?
答:
1赞
JonasH
8/8/2023
#1
来自 UnhandledException 事件的文档
从 .NET Framework 4 开始,除非事件处理程序是安全关键型的并且具有 HandleProcessCorruptedStateExceptionsAttribute 属性,否则不会引发破坏进程状态的异常(如堆栈溢出或访问冲突)。
我的猜测是对话框使用了此事件,并且异常类型可能是原因。您可以检查事件日志以调查发生的异常类型,并且可能会发现一些模式。
但这应该是一个裤子着火的情况。无论崩溃的原因是什么,您都需要修复它。有些异常可能需要使用 try/catch 进行处理,而其他异常则从一开始就不应该发生。对于任何事情,依赖框架提供的一些错误对话框都不是一个好主意。
2赞
shingo
8/8/2023
#2
默认情况下,当 UI 线程(主线程 IOW)上抛出异常并且代码未处理该异常时,将弹出该对话框。如果在其他线程上抛出异常,则不会弹出。
可以使用 Application.SetUnhandledExceptionMode
方法覆盖默认行为:
// Your application will exit when there's an exception.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
或 Application.ThreadException
事件:
// Nothing will happen unless the exception is re-thrown from the handler.
Application.ThreadException += (sender, e) => { };
评论