Example #1
0
 /// <summary>
 /// 处理异常,为以下顺序
 /// 1. 如果为 false,则表明没处理,让 BasePage_Error 处理
 /// 2. 如果重载为 true,则由页面处理
 /// </summary>
 /// <param name="ex">异常</param>
 /// <param name="step">哪个环节出现的</param>
 /// <param name="id">额外的 id 信息</param>
 /// <returns></returns>
 protected virtual bool _HandleException(Type callerType,
                                         ExceptionFilter exFilter, string step, Action <string> msgSend = null)
 {
     // 首次加载报的错
     if (!IsPostBack && !_IsPartial)
     {
         if (exFilter.Exception != null)
         {
             new
             DTException.DataSetter(exFilter.Exception.Data)
             .Record("BASE.Step", step)
             .Record("BASE.PageUrl", Request.RawUrl);
             throw exFilter.Exception;
         }
     }
     if (!exFilter.Handled)
     {
         string msg = exFilter.Exception.Message;
         exFilter.DT(ex =>
         {
             if (ex is TTableRecordNotFound)
             {
                 msg = "您好,数据未能访问 ";
             }
             if (ex.Data != null && ex.Data.Count > 0)
             {
                 msg += "\r\n参考(用于运维):\r\n----------";
                 foreach (var key in exFilter.Exception.Data.Keys)
                 {
                     msg += string.Format("\r\n  {0}:{1} ",
                                          key.ToStringEx(), exFilter.Exception.Data[key].ToStringEx());
                 }
                 msg += "\r\n----------";
             }
         });
         if (msgSend != null)
         {
             msgSend(msg);
         }
         else
         {
             _JS.Alert(msg);
         }
     }
     return(true);
 }