您的位置:首页 > 其它

如何捕获winform程序全局异常?

2013-07-21 05:29 543 查看
1.在C#中我们如何处理异常?

上面的问题学过C#的问题大家可能都能回答处理,用try-catch-finally具体如下:
using System]
using System;
using System.Threading;
using System.Windows.Forms;

namespace TestAllException
{
//form1下面对应的代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
throw new IndexOutOfRangeException("无效的异常操作");
}

}
}

通过大家对上面的代码读,我就不直接上界面的图了,form1上只有一个button1的按钮。我们直接运行然后点击按钮,然后就会出现下面的情况:

[caption id="attachment_1225" align="alignnone" width="600"]

全局异常捕捉1[/caption]

这下能够实现我们的需求了,但是是有条件的,仅仅只有主线程一个线程的程序可以这么办,但是当程序的线程增加的时候,新增线程出错的时候我们还是无法捕捉到。具体代码如下:
using System;
using System.Threading;
using System.Windows.Forms;

namespace TestAllException
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
throw new IndexOutOfRangeException("无效的异常操作");
}

private void button2_Click(object sender, EventArgs e)
{
try
{
Thread th = null;
th = new Thread(new ThreadStart(ThreadStart1));
th.Start();
}
catch (Exception ex)
{
throw ex;
}
}

private void ThreadStart1()
{
throw new FormatException("多线程异常,格式异常");
}
}
}[/code]
当上面的代码运行时点击button2时我们的异常无法处理,然后程序会崩溃,那么如何处理新增线程的异常呢?这个留到下篇文章开讲。

总结

本文提供了一种可以捕获单线程程序全局异常的方案,供大家参考。希望对大家有帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: