探讨对Web控件的异常处理
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-05-19
eturn;
92 }
93
94 try
95 {
96 RenderByCatchedException(writer);
97 }
98 catch (HttpUnhandledException)
99 {
100 throw;
101 }
102 catch (Exception ex)
103 {
104 RenderException(writer, ex);
105 }
106 }
107
108 /**//// <summary>
109 /// 呈现(已进行错误捕捉处理)
110 /// </summary>
111 /// <param name="writer"></param>
112 protected virtual void RenderByCatchedException(HtmlTextWriter writer)
113 {
114 base.Render (writer);
115 }
116
117 /**//// <summary>
118 /// 呈现异常
119 /// </summary>
120 /// <param name="writer"></param>
121 /// <param name="ex"></param>
122 private void RenderException(HtmlTextWriter writer, Exception ex)
123 {
124 writer.AddAttribute(HtmlTextWriterAttribute.Title, BuildExceptionInfomation(ex));
125 writer.AddStyleAttribute("font-weight", "700");
126 writer.AddStyleAttribute("color", "#f00");
127 writer.AddStyleAttribute("border", "1px solid #ddd");
128 writer.AddStyleAttribute("cursor", "pointer");
129 writer.AddStyleAttribute("padding", "0px 3px 0px 3px");
130 writer.AddStyleAttribute("background-color", "#ffe");
131 writer.RenderBeginTag(HtmlTextWriterTag.Span);
132 writer.Write("!");
133 writer.RenderEndTag();
134 }
135
136 /**//// <summary>
137 /// 生成异常信息
138 /// </summary>
139 /// <param name="ex"></param>
140 /// <returns></returns>
141 private string BuildExceptionInfomation(Exception ex)
142 {
143 StringBuilder sb = new StringBuilder();
144 sb.Append(ex.Message);
145 sb.Append(Environment.NewLine);
146 sb.Append(ex.GetType().FullName);
147 sb.Append(Environment.NewLine);
148 sb.Append(ex.StackTrace);
149 return sb.ToString();
150 }
151
152 /**//// <summary>
153 /// 中断程序的执行
154 /// </summary>
155 /// <param name="ex"></param>
156 protected virtual void Interrupt(Exception ex)
157 {
158 throw new HttpUnhandledException(ex.Message, ex);
159 }
160}
161
上面的代码只重载了OnPreRender、Render和CreateChildControls三个方法,实际上还有OnInit、OnLoad等,可以视实际需要而重载,这样重载之后,所有错误都被捕捉,并存放在错误栈中,并在呈现时将错误以某种格式呈现在界面上。注意,继承AbstractControl基类的控件应重载如RenderByCatchedException之类的方法。 如果某些错误不希望被捕捉,而是直接抛出到页面上,这时候还可以调用Interrupt方法来将错误直接抛出到页面上,并中断整个页面的执行。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于探讨对Web控件的异常处理的所有评论