【发布时间】:2011-01-04 06:23:02
【问题描述】:
首先,很抱歉必须是重复的帖子。我似乎无法在 SO 和 google 上缩小搜索范围以找到我正在寻找的内容。
我目前在一家商店工作,他们喜欢让他们的例外冒泡。当编译的应用程序进行测试时,试图获取异常的详细信息(消息和堆栈跟踪)是一件非常痛苦的事情。 Windows 显示了那个熟悉的框,它从来没有任何细节。
在最近花了近一个小时发现测试盒的水晶报告版本错误后,我添加了这个大家可能都熟悉的简单代码。
static void Main(string[] arg)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run( ... );
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.ToString());
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show((e.ExceptionObject as Exception).ToString());
}
这可以完成工作,但我不允许签入。是否有任何方法可以在 app.config 中或通过注册表设置让 CLR 显示或记录已编译的 .net 应用程序的异常详细信息?
提前感谢您的帮助。
【问题讨论】:
-
你不能用日志替换你的 MessageBox 调用,然后重新抛出异常吗?
-
您是否考虑过插入日志记录 DLL(如 log4net)或 EnterpriseLibrary 日志记录,然后按照 Martin 的建议进行操作?
标签: c# .net exception-handling clr