当我的应用程序因未处理的异常而崩溃时,我正在使用AppDomain.UnhandledException
事件处理程序执行一些日志记录。
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {...}
当未处理的异常的来源是我的自定义对象类之一时,我希望能够记录typeof(object)
和各种object
字段/属性,但似乎这些信息不是包含在UnhandledExceptionEventArgs
或sender
对象中。我尝试了sender
,但可以理解的是,sender
只是引发异常的AppDomain
。
有没有办法从 这个事件处理程序中检索此信息?我能想到的唯一另一件事是每次对象抛出时都使用静态字段来存储对象的引用,但我认为这需要我为每个类型设置一个静态字段。< / p>
注意:我知道stack trace
可能会将我引向异常的来源,但是这不允许我在崩溃期间记录有关该对象的重要状态信息。
例如,如果e.ExceptionObject
的堆栈跟踪是
Stack Trace:
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
at CustomLibrary.CustomObject.readCallback(IAsyncResult ar)
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
...
我希望能够获得NetworkStream
对象的引用,这将允许我在集合中找到关联的CustomObject
。
答案 0 :(得分:0)
尝试使用下面的代码,看看异常是否被捕获。还要检查代码中的任何位置是否正在重新抛出异常,例如ULElement
。如果是,它会占用您正在寻找的堆栈跟踪,请尝试使用throw ex
重新抛出。
throw
希望这有帮助!