异常相关的代码

2014-10-24 13:50:19  访问(2389) 赞(0) 踩(0)

  • 程序的异常处理,简单的代码就是:

    
            try
            {
                string str = null;
    
                string two = str.ToLower();
            }
            catch (Exception err)
            {
                lt_Result.Text = err.Message;
            }
    
    


    返回结果提示:

    未将对象引用设置到对象的实例。


    这样,如果在多层调用的函数或模块中,我们很难知道哪个方法或函数发生错误。

    我们可以深度挖掘异常err变量反馈的信息,如下面例子:

    
            try
            {
                string str = null;
    
                string two = str.ToLower();
            }
            catch (Exception err)
            {
                StringBuilder errSB = new StringBuilder();
                errSB.Append("err.Message:" + err.Message + "<br />");
                errSB.Append("err.Source:" + err.Source + "<br />");
                errSB.Append("err.TargetSite:" + err.TargetSite.ReflectedType.FullName + " " + err.TargetSite.Name + "<br />");
                errSB.Append("err.StackTrace:" + err.StackTrace.Replace(""+'\r'+'\n',"<br />"));
                
                lt_Result.Text = errSB.ToString();
            }
    


    返回结果提示:

    err.Message:未将对象引用设置到对象的实例。
    err.Source:App_Web_qm27qxrj
    err.TargetSite:WebForms_WebPages_code_dotnet_common_basic_ExceptionDemo Button1_Click
    err.StackTrace: 在 WebForms_WebPages_code_dotnet_common_basic_ExceptionDemo.Button1_Click(Object sender, EventArgs e) 位置 c:\Projectes\SlowX\SRC\Code\SlowXWebSite\WebSite\WebForms\WebPages\code\dotnet\common\basic\ExceptionDemo.aspx.cs:行号 35


    因此,可以封装一个异常处理的方法函数:

    
            /// <summary>
            /// 打印和输出异常
            /// </summary>
            /// <param name="err"></param>
            /// <returns></returns>
            public static string GetExceptionInfo(Exception err)
            {
                StringBuilder theResult = new StringBuilder();
    
                theResult.AppendLine("err.Message:" + err.Message);
                theResult.AppendLine("err.Source:" + err.Source);
                theResult.AppendLine("err.TargetSite:" + err.TargetSite.ReflectedType.FullName + " " + err.TargetSite.Name);
                theResult.AppendLine("err.StackTrace:" + err.StackTrace);
    
                return theResult.ToString();
            }
    
    




标签:捕获异常    自定义异常内容    跟踪异常 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)