我正在用 C# 开发一个 GUI 应用。
这是一个多线程应用程序,我想用 包装所有线程(其中一些我没有打开,例如
/NetClient.StartDownload
,这是一个非阻塞函数) trycatch
语句,这样如果抛出异常但未捕获,我可以记录它并向基地报告。
我尝试使用 Application.ThreadException
和 AppDomain.CurrentDomain.UnhandledException
,但它们似乎只能捕获 GUI 异常。
我需要用不同的方式来处理这个问题吗?
最佳答案
每个线程中的代码都需要有一个 try-catch。异常不会跨线程编码...并且未处理的异常只会导致应用程序停止运行。
要捕获所有异常 - 只需使用基本异常类型。
catch(Exception e) { // log e }
更新:
您可以查看 AppDomain.UnhandledException
- 处理此事件以在任何线程上记录未处理的异常;但是您无法阻止应用程序停止运行。如需更多信息,请查看
http://www.albahari.com/threading/#_Introduction - 在该页的末尾。
关于c# - 在 C# 中捕获所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3325037/