如何捕获winform程序全局异常?
2013-07-21 05:29
543 查看
1.在C#中我们如何处理异常?
上面的问题学过C#的问题大家可能都能回答处理,用try-catch-finally具体如下:
通过大家对上面的代码读,我就不直接上界面的图了,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时我们的异常无法处理,然后程序会崩溃,那么如何处理新增线程的异常呢?这个留到下篇文章开讲。
上面的问题学过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时我们的异常无法处理,然后程序会崩溃,那么如何处理新增线程的异常呢?这个留到下篇文章开讲。
总结
本文提供了一种可以捕获单线程程序全局异常的方案,供大家参考。希望对大家有帮助。相关文章推荐
- 转:如何捕获winform程序全局异常?
- 如何捕获winform程序全局异常?(续)
- 如何捕获Wince下form程序的全局异常
- winform程序不能同时开启两个应用程序的判断以及捕获全局未处理异常
- Winform 主程序入口中记录并捕获全局异常
- 程序全局异常捕获
- winform中捕获程序未处理的所有异常
- Winform程序全局热键与局部热键(键盘快捷键的捕获)
- 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
- 如何在linux程序中捕获异常信号
- winform 记录全局异常捕获
- Android全局异常处理(捕获异常,不弹出程序崩溃)
- 转 C#WinForm程序异常退出的捕获、继续执行与自动重启
- C# WINFORM 捕获全局异常
- winform程序未捕获异常解决方法
- C# WINFORM 捕获全局异常
- 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
- C#WinForm程序异常退出的捕获、继续执行与自动重启
- 在C#代码中应用Log4Net(四)在Winform和Web中捕获全局异常
- winform中捕获程序未处理的所有异常