C#中实现Exception时重试功能

如果一个方法执行过程中可能出现错误,但又不好直接重复执行这一段代码更不愿意中断执行。这时候可以选择人工参与的方式,就像安装程序的时候找不到文件,可以让你选择文件,不正确仍可选择是否继续。

 本人在网上搜索了一下,发现没有相关的文章。所以自己玩了玩,方法比较差不过效果不错。

方法就是弹出对话框,给交互者处理。见图

弹出对话框需要引用System.windows.form程序集,有些类库项目默认不引用。

所以我就另外建了个项目RetryDialog,生成单独的dll。见代码

namespace  RetryDialog
{
    
public class Dlg
    
{
        
public enum XDialogResult
        
{
            Retry
=DialogResult.Cancel,
            Abort
=DialogResult.Abort
        }


        
public static XDialogResult Show(System.Exception ex)
        
{
            DialogResult r 
= new ThreadExceptionDialog(ex).ShowDialog();
            
if (r == DialogResult.Cancel)
            
{
                
return XDialogResult.Retry;
            }

            
else
                
return XDialogResult.Abort;
        }

    }

}

 

这里使用了System.Windows.Form.THreadExceptionDialog系统对话框,点击继续按钮返回值为DialogResult.Cancel。

下面是用户交互的代码

protected   void  LoadPageXml(System.Xml.XmlDocument doc,  string  url)
        
{
        RELOADXML:
            
try
            
{
                doc.LoadXml(m_httprequest.getPage(url));
            }

            
catch (Exception ex)
            
{
                mysqldb.dblog.SaveLog(
string.Format("获取xml数据失败,url={0}", url));
                
if (RetryDialog.Dlg.Show(ex) == RetryDialog.Dlg.XDialogResult.Retry)
                
{
                    mysqldb.dblog.SaveLog(
"重试");
                    
goto RELOADXML;
                }

                
            }

        }

原创!谢谢支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值