我正在尝试在 C# Windows 窗体应用程序中捕获所有未经处理的异常。我已将以下代码添加到Program.cs
文件中,但未捕获异常,我得到异常,例如NullReferenceException
. 我究竟做错了什么?
static void Main()
{
System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
System.Windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(OnGuiUnhandedException);
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
var form = new MainForm();
form.ShowDialog();
}
private static void HandleUnhandledException(Object o)
{
// TODO: Log it!
Exception e = o as Exception;
if (e != null)
{
}
}
private static void OnUnhandledException(Object sender, UnhandledExceptionEventArgs e)
{
HandleUnhandledException(e.ExceptionObject);
}
private static void OnGuiUnhandedException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
HandleUnhandledException(e.Exception);
}
编辑:当程序在 Visual Studio 外部运行时,我能够捕获异常,但是当从 Visual Studio 调试时,我无法捕获异常。我知道调试是为了消除错误。我应该在构建模式下运行程序以捕获异常吗?