c# - 在 C# 中捕获所有异常

标签 c# multithreading exception

我正在用 C# 开发一个 GUI 应用。

这是一个多线程应用程序,我想用 包装所有线程(其中一些我没有打开,例如 NetClient.StartDownload,这是一个非阻塞函数) try/catch 语句,这样如果抛出异常但未捕获,我可以记录它并向基地报告。

我尝试使用 Application.ThreadExceptionAppDomain.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/

相关文章:

c# - 正则表达式 11 位字符串捕获

c# - 我可以将 Braintree.js 与 .NET Web 应用程序一起使用吗?

c# DateTime 添加/减去工作日

java - Log4j 挂起我的应用程序我做错了什么?

java - 如何在保持当前连接的情况下连接到多个服务器?

Java - OSX Mavericks 上的 Accumulo init 异常 - log4j 记录器

C# WebAPI 2反序列化产生空值但没有异常

C#/TCP 套接字/阻塞读取/如何关闭此类线程

Java - ClassNotFoundException : java.net.http.HttpClient

c# - 无法访问的代码,但可以异常访问