关于c#:当我不知道它可能抛出的位置时,如何记录异常?

How do I log an exception when I don't know where it might throw?

我们为客户部署了一个WPF应用程序。但是,应用程序随机崩溃,在客户的计算机上出现"意外错误"对话框。我们需要能够看到异常消息,最好也能看到堆栈跟踪,但是因为它是随机崩溃的,所以我们不知道应该将try/catch检查放在哪里,以便记录它。我们正在使用nlog进行日志记录。我的问题是,我们是否有任何方法可以配置nlog来捕获代码未处理的所有异常,或者使用其他方法?


为什么不放置一个覆盖整个代码的全局try/catch块呢?

因为它是一个WPF应用程序,所以可能需要进行一些更改。不要让wpf自动打开主窗口,而是删除app.xaml文件,然后从应用程序起点(在try/catch内部)通过代码打开窗口。

请注意,这不是一个好的实践(就像捕获所有异常通常是不好的),但可能是一个临时的解决方法,以找出崩溃发生的位置。

编辑:我还邀请您阅读有关WPF中全局Try/Catch块的相关问题的答案。有一些有用的东西我写答案时不知道。