zoukankan      html  css  js  c++  java
  • ASP.NET Forums2.x自动捕获异常的基类(补充)

     

         经过一段时间的使用,发现该基类只能自动捕获未处理的异常, 对于用try{}catch (Exception exp){}语句处理过的异常,不能自动捕获。所以,只有手工捕获了:

     

    /// <summary>

             /// 记录捕获的系统异常信息

             /// </summary>

             /// <param name="page"></param>

             /// <param name="exception"></param>

             public static void LogException (Page page,Exception exception)

             {

                  System.Data.SqlClient.SqlException e = (System.Data.SqlClient.SqlException)(exception);

                  string t = "\r\n";

                  string sMessageTmp = "";

                  string sMessage = "";

                  string sSource = "";

                  if (e.Message!=null)

                       sMessageTmp = e.Message.Replace(t,"\\n");

                  if (e.Number > 0)

                       sMessage = String.Format("数据库操作错误!\\n错误号:{0} \\n错误信息:{1}\\n", e.Number, sMessageTmp);

                  if (e.Source!=null)

                       sSource = String.Format("错误来源:{0}", e.Source);

     

                  sSource += page.Request.Url.PathAndQuery;

                  if (e.Procedure!=null)

                       sSource += "    出错对象为:" + e.Procedure;

     

                  using(SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["HexiesoftSqlConnectionString"]))

                  {

                       SqlCommand myCommand = new SqlCommand("ExceptionsInfo_Log", myConnection);

                       myCommand.CommandType = CommandType.StoredProcedure;

     

                       myCommand.Parameters.Add("@Category", SqlDbType.Int).Value = 1;

                       myCommand.Parameters.Add("@Exception", SqlDbType.NVarChar,4000).Value = e.StackTrace.ToString().Trim();

                       myCommand.Parameters.Add("@ExceptionMessage", SqlDbType.NVarChar, 500).Value = sMessage;

                       myCommand.Parameters.Add("@UserAgent", SqlDbType.NVarChar, 64).Value = page.Request.UserAgent;

                       myCommand.Parameters.Add("@IPAddress", SqlDbType.VarChar, 15).Value = page.Request.UserHostAddress;

                       myCommand.Parameters.Add("@HttpReferrer", SqlDbType.NVarChar, 512).Value = page.Request.UrlReferrer.ToString();

                       myCommand.Parameters.Add("@HttpVerb", SqlDbType.NVarChar, 24).Value = page.Request.RequestType;                      ;

                       myCommand.Parameters.Add("@PathAndQuery", SqlDbType.NVarChar, 512).Value = sSource;

                       myConnection.Open();

                       myCommand.ExecuteNonQuery();

                       myConnection.Close();

                  }

             }

     

    调用示例:

                           try

                           {

                                ……

                           }

                           catch (Exception exp)

                           {

                                sqlConnection1.Close(); //更新数据库出错返回之前要关闭sqlConnection1

                                JSUtil.LogException(this,exp);

                                JSUtil.Alert(this,"……失败,请重新再试!"+exp.Message);

                                return;                                       

                           }

  • 相关阅读:
    自然语言处理(三)——PTB数据的batching方法
    自然语言处理(二)——PTB数据集的预处理
    自然语言处理(一)——语言模型评价方法
    TensorFlow数据集(二)——数据集的高层操作
    TensorFlow数据集(一)——数据集的基本使用方法
    TensorFlow多线程输入数据处理框架(四)——输入数据处理框架
    Node的简介
    seajs的原理以及基本使用
    git常用指令
    一个小白的四次前端面试经历
  • 原文地址:https://www.cnblogs.com/ynlxc/p/233152.html
Copyright © 2011-2022 走看看