/// <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); }