抛出未处理的与CLS兼容/不兼容的异常
'By wgscd 2008/11/3
'http://blog.youkuaiyun.com/wgsnet
''程序里不免会发生也想不到的错误
'当发生那种没有预料到的错误时候,程序在崩溃前给用户显示个抱歉信息,同时收集到导致崩溃的异常信息是很有必要的
就是要处理好UnhandledException
例子:
[STAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException +=new UnhandledExceptionEventHandler(wgscdErrHandler);
Application.Run(new Form1());
}
static void wgscdErrHandler(Object sender, UnhandledExceptionEventArgs e)
{
//此字符串用来显示或记录日志信息
String info;
//初始化它
Exception ex=e.ExceptionObject as Exception ;
if (ex!=null)
{
//抛出未处理的与CLS兼容的异常
info=ex.ToString ();
//向用户显示抱歉
MessageBox.Show("抱歉。。。。。。。");
//MessageBox.Show(ex.Message);
}
else
{
//抛出未处理的与CLS兼容的异常
info=String.Format("与CLS兼容的异常: Type={0},String={1}",e.ExceptionObject.GetType(),e.ExceptionObject.ToString());
}
#if DEBUG
//对调试构建应用程序时,启动调试器。可明白发生的事情并修正它
if (!e.IsTerminating)
{
Debugger.Launch();
}
else
{
Debugger.Launch ();
}
//#else
//显示或记录异常,以便用户将其返回报告给你
if (!e.IsTerminating)
{
// do some thing
}
else
{//发生在托管线程中的未处理的异常
//CLR将杀死尺此应用程序,下面代码将显示和记录异常
String msg=String.Format("{0}遇到了问题需要关闭,为此给您到来的不便我们深感抱歉。/n/n" +
"请告诉{1}这个问题。/n我们已经建立了这个错误的报告,你可以发送给我们以便帮助我们改善,"
+"这个报告将看作是隐私和匿名的。/n/n 你希望现在发送这个错误报告吗?","这个应用程序","奔腾娱乐wgscd");
if ( MessageBox.Show(msg,"应用程序名",MessageBoxButtons.YesNo)==DialogResult.Yes)
{
// 接收或处理报告
MessageBox.Show(info,"错误报告");
}
}
#endif
}
private void button1_Click(object sender, System.EventArgs e) //测试
{
int a,b;
a=2;
b=0;
int d=a/b;
}
本文介绍了一种处理未捕获异常的方法,通过注册AppDomain.UnhandledException事件来捕获程序中未处理的异常,并展示了如何向用户显示错误信息及收集异常详情。
2902

被折叠的 条评论
为什么被折叠?



