WinForm出现无法处理的异常解决

WinForm程序会出现无法处理的异常有多少种情况我不清楚,我今天就遇到一个,这样无法获取到异常信息的情况,对用户的体验很不好,后来查到我的代码中为何出现这样的情况,因为我习惯把整体的语句块包在最外层,来获取中间可能出现的异常,然后进行处理,但是这段代码中用到了BeginInvoke的语句块,而我使用了匿名方法,那么在匿名方法中的异常,外面是捕捉不到的。所以会出现无法处理的异常情况,正确的代码应该这样:

this.BeginInvoke(new MethodInvoker(delegate()
{
    bool flag = false;
    try
    {
        flag = service.Authentication();//此处可能造成异常
        if (flag)
        {
            this.DialogResult = DialogResult.OK;
        }
        else
        {
            MessageBox.Show("用户名或者密码错误。", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    catch (Exception ex)
    {
        Program.notifity.ShowBalloonTip(2000, "应用程序错误", ex.Message, ToolTipIcon.Error);
    }
}));

上面代码中调用了WebService,但是断网的时候会出现无法连接,因为写在了匿名方法中,所以this.BeginInvoke外面的tryf块无法捕获WebService产生的异常信息,所以,要将tryf块写在里面。

原文地址:http://luacloud.com/2011/winform-can-not-handle-the-exception.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值