使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...
上一期我们向大家介绍了如何配置与记录异常,下面我将向大家介绍如何配置异常的展示。异常的展示是指系统一旦发生异常,将会以何种样式返回给终端用户,IsLine FrameWork为开发人员提供了10种不同的展现方式,本期文章会给大家详细介绍。
对异常的展示管理分为基本异常管理与超级日常管理。基本异常是指编码造成的异常,超级异常是指在记录异常的过程中发生的异常,本文将对如何处理这两种异常展开讲解。
一.基本异常展示的方式
如果有以下错误代码:
try
{
string i = "i";
Response.Write(Convert.ToInt32(i));
}
catch (Exception ex)
{
ILException ile = new ILException();
ile.WriteLog(ex);
}
根据以下不同配置信息,页面有不同的显示,这个显示方式根据web.config给出的键值决定:
<add key="IsLine.ExceptionProcess.Configuration.ProcessStyle" value="ThrowOriginalWithLog"/>
其中,value可以为以下枚举值:
1.ThrowOriginalWithLog
这种方式的含义是抛出原始错误,终止应用程序,并将这种错误记录到异常日志中。
图6.1 原始错误
2.ThrowOriginalWithoutLog
这种方式的含义只是抛出原始错误,终止应用程序,并不记录这种错误,图示同上。
3.ThrowFriendlyWithLog
这种方式的含义是抛出友好的错误信息,终止应用程序,并记录异常。友好异常信息由自己定义。
图6.2 抛出友好信息
4.ThrowFriendlyWithoutLog
这种方式的含义是抛出友好的错误信息,终止应用程序,并不记录异常,图示同上。
需要注意的是,使用3、4两种配置,需要在web.config中添加额外的节点信息,这些信息决定了友好信息的显示字段与排版:
在<configSections></configSections>中添加以下信息
<sectionGroup name="IsLine.ExceptionProcess.Configuration">
<section name="ILExceptionModel" type="IsLine.Data.Configuration.SuitConfig" />
</sectionGroup>
在</configSections><appSettings>之间加入以下信息
<IsLine.ExceptionProcess.Configuration>
<ILExceptionModel>
<Message>->Message:@Message</Message>
其他配置地段省略。。。
</ILExceptionModel>
</IsLine.ExceptionProcess.Configuration>
5.ThrowSimpleWithLog
这种方式的含义是抛出简单的预定义的错误信息,终止应用程序,并记录异常。抛出的异常内容只有很简单的信息“The current page has an exception!”,这个预定义信息由以下节点定义,value部分就是页面显示的信息:
<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.FriendlySimpleText" value="The current page has an exception!"/>
6.ThrowSimpleWithoutLog
这种方式的含义是抛出简单的预定义的错误信息,终止应用程序,并不记录异常,图示同上。
7.ShowSimpleWithLog
这种方式的含义是显示简单的预定义的错误信息,不终止应用程序,并记录异常。
这种方式显示错误信息与5、6相同,但是5、6配置形式,如果程序中遇到错误则会触发“throw”,从而导致程序终止运行;而7、8怎会显示错误,程序继续运行。
8.ShowSimpleWithoutLog
这种方式的含义是显示简单的预定义的错误信息,不终止应用程序,并不记录异常。
9.HideWithLog
这种方式的含义是不显示任何错误信息,不终止应用程序,并将异常信息记录。
10. HideWithoutLog
这种方式的含义是不显示任何错误信息,不终止应用程序,并不记录异常信息。
注意,异常的记录是日志模块可以理解为继承的关系,日志模块的缓存等特性配置,在异常中仍有效。
至于,异常信息被写到什么地方,正如我们前面所说到的,它是由日志的Render决定的:
<add key="IsLine.ExceptionProcess.Configuration.RenderName" value="OracleUsingSPRender"/>
“OracleUsingSPRender”便是日志的Render名称, Render模型描述了异常记录位置、格式等信息,详细请见上一期文章中的内容。
从上文中大家可以看出,通过web.config中的配置信息,用户只需要修改一个枚举值,即可改变异常的展现方式,同时决定系统在发生异常后是否继续运行下去,这对于一个系统很重要,有些时候我们需要系统即使发生异常也要继续运行,而有些时候我们必须在异常发生时回滚并停止系统运行。使用异常支持模块,我们将很容易做到这一点。
二.关于超级异常日志
如果在异常记录的过程中,发生错误,这时异常信息不会记录成功,异常信息自动被忽略,如果管理员希望在日志模块出现错误时,ILFW仍然记录这些信息,管理员可以打开配置文件中“超级日志”的开关。
当此开关打开后,如果日志模块出现错误(例如数据库连接中断),ILFW会自动将当前信息记录至一个文本文件中,直到导致日志模块错误的因素消失。
在web.config中添加以下节点开启超级日志功能:
<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.IsOpenDebugInfo" value="True" />
以下节点表示超级日志记录位置:
<add key="IsLine.ExceptionProcess.ExceptionProcessProvider.DebugInfo" value="C:\IsLineLog\FinallyLog.txt" />
注意,超级日志只能写入文本文件,并且使用超级日志需要确保相关账户对日志文件具有完全控制权限。
同时需要注意的时,如果您将日志模块配置为缓存打开,那么记录异常时也将继承这一特性,依据缓存大小进行缓存,超过缓存阀值时,在写入异常信息。
在下一讲,我们将会讲针对web开发,讲解一下缓存、Session、Cookie的配置与使用。
本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2010/05/05/ilfw6.html,如需转载请自行联系原作者
使用IsLine FrameWork开发ASP.NET程序之六—使用ExceptionProcessProvider异常处理框架(下)...相关推荐
- 使用IsLine FrameWork开发ASP.NET程序之一——命名空间与契约概览
早就有想法写一个通用的底层框架了,毕竟平时的工作很多,使用第三方框架对项目适应度不会很满意,所以还不如自己抽时间写一套自己用着舒服的框架,于是花了几个月的时间完成了这个项目的开发,现在介绍给大家,相信 ...
- ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下)
ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下) 接上文 异常展示 系统异常模块除了记录功能,还有一个很 ...
- Orchard Core Framework:ASP.NET Core 模块化,多租户框架
上一篇编写Orchard Core一分钟搭建ASP.NET Core CMS ,介绍ASP.NET Core CMS ,Orchard的ASP.NET Core版,同时对应有一个ASP.NET Cor ...
- 遵义微科技小程序商城直播系统,线下零售行业发展新趋势!
直播卖货是今年零售业新风口.受肺炎疫情影响,截止到现阶段,大部分城市的线下零售业遭遇店面房租.产品库存量.员工薪水等多种压力的商家,竞相开始转型发展网上打起"增长保卫战",直播更是 ...
- ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)
ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下) 接上文 对文件系统的操作: 对于文件目前内置3中支持对象:XML.TEXT.CONFIG ...
- ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存
ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存 今天我们来介绍 IsLine.HttpContent.HttpContentP ...
- ASP.NET企业开发框架IsLine FrameWork系列之七--AppLogProvider日志框架(上)
ASP.NET企业开发框架IsLine FrameWork系列之七--AppLogProvider日志框架(上) 日志与异常 部署系统以后,管理员需要有一套强大的日志系统来诊断和修复配置上的问题,这就 ...
- ASP.NET企业开发框架IsLine FrameWork系列之二--命名空间与契约
ASP.NET企业开发框架IsLine FrameWork系列之二--命名空间与契约 接上文 ILFW框架以最底层为基础,层层堆叠,上层一依赖于下层提供的服务,并实现其派发的接口,形成完整的Frame ...
- ASP.NET企业开发框架IsLine FrameWork系列之一--第一次的亲密接触
ASP.NET企业开发框架IsLine FrameWork系列之一--第一次的亲密接触 早就有想法写一批通用的DLL了,毕竟平时的工作很多,使用第三方框架对项目适应度不会很满意,所以还不如自己抽时间写 ...
最新文章
- XIV Open Cup named after E.V. Pankratiev. GP of Europe
- 测试 远程端口 是否处于监听状态
- 【论文阅读和实现】On Spectral Clustering: Analysis and an algorithm【Python实现】
- java espresso 自行车_java – 如何在Espresso中重新运行失败的测试? – 头脑风暴
- php性能提升5倍的秘诀,停机维护时长缩短5倍,全靠这3个秘诀
- ES6 Symbol的应用场景
- MySQL / 自带的四个数据库介绍
- js 只准输入数字_js实现文本框只允许输入数字并限制数字大小的方法
- Python笔记 【无序】 【一】
- BZOJ3448 : [Usaco2014 Feb]Auto-complete
- 《MySQL——如何解决一主多从的读写分离的过期读问题》
- 操作系统之文件管理:5、文件物理结构(连续分配、链式(显式、隐式)分配、索引分配(链接、多层索引、混合索引))
- oracle客户端odbc安装程序,Oracle Instant Client ODBC 安装说明
- Python 爬虫超详细讲解(零基础入门,老年人都看的懂)
- 我能为IT行业做什么
- [原创]通过动态Sql语句,一次性彻底删除或者修改SBO的某个字段对应内容的信息...
- 【毕业季】图匮于丰,防俭于逸;治不忘乱,安不忘危。
- day25 Scala编cala编译器安装 3.1.	安装JDK 因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK 3.2.	安装Scala 3.2.1.	Windows基础
- MATLAB SCI论文绘图及绘图窗口大小设置
- grub命令 u盘安装linux,通过grub-install命令把grub安装到u盘-总结
热门文章
- Linux下运行第一个Java程序成功(Linux下JDK安装和环境变量配置等)
- 未处理OleDbException - 找不到可安装的ISAM学习总结
- CSS列表和一些变化情况
- html and js 的隔行换背景色表格实例详解
- Syn Bot /OSCOVA 快速回复(11)
- Java知多少(完结篇)
- python if调用函数,Python根据字符串调用函数过程解析
- Assessing systemic risk due to fire sales spillover through maximum entropy network reconstruction
- 【Matlab】利用 LMI 解矩阵不等式方程
- 【控制】复杂度定义及计算