use*_*413 4 .net c# multithreading exception
Visual Studio能够打破所有异常,即使它们被捕获.请注意CLR异常的"Thrown"下的复选框.检查时,throw即使catch调用堆栈中存在某个位置,调试器也会在每个语句上中断.

有没有办法在代码中执行此操作?我在64位类库中使用.NET 4.5.1.我的目标是记录每个异常及其堆栈跟踪.这样,当我在没有Visual Studio的计算机上测试我的程序时,我会得到抛出异常的日志,甚至是我通过向用户显示对话框来处理的异常.我的程序是多线程的,因此它需要在任何线程中引发抛出异常的事件.
一种可怕的方法就是扩展Exception,将一些代码放在新类的构造函数中,并确保每个异常都扩展它.但是,这是不可行的,因为抛出的许多异常甚至不是我的代码而是CLR本身.
那么,关于如何引发或监听在抛出异常时引发的事件的想法,即使捕获该异常也是如此?我所见过的是各种捕捉未捕获异常的方法,这不是我想要的.
Eug*_*kal 11
您可以使用AppDomain.FirstChanceException事件.
AppDomain.Current.FirstChanceException += (sender, eventArgs) =>
{
Logger.Log(eventArgs.ToString());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |