【发布时间】:2018-09-25 13:31:09
【问题描述】:
在我的App.xaml.cs 中,我有这些代码来捕获异常并记录它们
public App()
{
SetupExceptionHandlingInApp();
// other codes
}
private void SetupExceptionHandlingInApp()
{
this.DispatcherUnhandledException += (s, e) =>
{
e.Handled = true;
//LOGGING CODE HERE
this.Shutdown(-1);
};
}
[STAThread]
public static void Main()
{
SetupExceptionHandlingInMain();
//other codes
}
private static void SetupExceptionHandlingInMain()
{
AppDomain.CurrentDomain.UnhandledException += (s, e) =>
{
//LOGGING CODE HERE
Environment.Exit(1);
};
System.Windows.Forms.Application.ThreadException += (s, e) =>
{
//LOGGING CODE HERE
Environment.Exit(1);
};
TaskScheduler.UnobservedTaskException += (s, e) =>
{
//LOGGING CODE HERE
};
}
在大多数情况下,我可以捕获异常并记录它。但是应用程序在执行时有时会崩溃,我找不到有关导致崩溃的异常的错误记录。
除了上述方法之外,我是否缺少其他方法来捕获异常?我看了一些关于 SO 的文章,但几乎他们都使用了上面的这些方法。
log4net 运行良好,因为我可以看到所有 ERROR 和 INFO 日志。
编辑
按照Panagiotis Kanavos的建议,我发现了错误:
应用程序:xxx.exe
框架版本:v4.0.30319
描述:le processus a été arrêté en raison d'une erreur interne dans le runtime .NET à l'adresse IP 547541C4 (54380000) avec le code de sortie 80131506。
翻译
应用程序:xxx.exe
框架版本:v4.0.30319
描述:进程因内部错误而终止 IP 547541C4 (54380000) 的 .NET 运行时,退出代码为 80131506。
【问题讨论】:
-
它是如何以及从哪里崩溃的?
-
@mm8 :应用程序在执行时在某处崩溃,因为存在未捕获的异常,问题中的代码用于捕获异常。它运作良好,但有时会出现他们无法捕获的异常。这意味着
-
@ThierryV 如果发生未处理的异常,则会在事件日志中写入应用程序崩溃错误。你检查过事件查看器吗?
-
您为什么认为
System.Windows.Forms.Application.ThreadException对WPF 应用程序完全有用? WinForms DLL 中而不是 WPF 中存在这种情况是有原因的 -
@CamiloTerevinto 希望我不会错过任何异常,我尝试使用它但我无法捕获异常