当我不知道它可能会抛出哪里时,如何记录异常?
Posted
技术标签:
【中文标题】当我不知道它可能会抛出哪里时,如何记录异常?【英文标题】:How do I log an exception when I don't know where it might throw? 【发布时间】:2011-04-08 02:48:06 【问题描述】:我们有一个已部署给客户的 WPF 应用程序。但是,该应用程序随机致命地崩溃,并在客户的计算机上显示“意外错误”对话框。我们需要能够看到异常消息,最好也能看到堆栈跟踪,但是因为它是随机崩溃的,所以我们不知道应该将 try/catch 检查放在哪里以便我们可以记录它。我们使用 NLog 进行日志记录。我的问题是,我们有什么方法可以配置 NLog 以捕获所有未由我们的代码处理的异常,或者其他方法?
【问题讨论】:
Globally catch exceptions in a WPF application? 的可能重复项 【参考方案1】:为什么不放置一个覆盖整个代码的全局 try/catch 块?
由于它是一个 WPF 应用程序,因此可能需要进行一些更改。不要让 WPF 自动打开主窗口,而是删除 App.xaml 文件,然后通过代码从应用程序起点(在 try/catch 中)打开窗口。
请注意,这不是一个好的做法(就像捕获所有异常通常不好),但可能是查找崩溃发生位置的临时解决方法。
编辑:我还邀请您阅读an answer to a related question,了解 WPF 中的全局 try/catch 块。写答案时,我不知道一些有用的东西。
【讨论】:
其实,捕捉所有异常很好,只要你不忽略它们。您需要一个*** try/catch 块,在关闭之前记录致命异常。以上是关于当我不知道它可能会抛出哪里时,如何记录异常?的主要内容,如果未能解决你的问题,请参考以下文章