使用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

    这种方式的含义是抛出原始错误,终止应用程序,并将这种错误记录到异常日志中。

clip_image002

图6.1 原始错误

  2.ThrowOriginalWithoutLog

这种方式的含义只是抛出原始错误,终止应用程序,并不记录这种错误,图示同上。

  3.ThrowFriendlyWithLog

这种方式的含义是抛出友好的错误信息,终止应用程序,并记录异常。友好异常信息由自己定义。

clip_image004

图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>-&gt;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,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
2014 2
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
1627 3
|
9月前
|
开发框架 安全 .NET
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
.NET Framework是Windows平台的开发框架,包含CLR和FCL,支持多种语言开发桌面、Web应用。常用版本有3.5、4.5.2、4.8.1,系统可同时安装多个版本,确保软件兼容运行。
2096 0
Microsoft .NET Framework 3.5、4.5.2、4.8.1,适用于 Windows 版本的 .NET,Microsoft C Runtime等下载
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
使用的是.NET Framework 4.0,并且需要使用SMTP协议发送电子邮件
265 1
|
10月前
|
C++
提示缺少.NET Framework 3.5 安装错误:0x80070002、0x800F0950\0x80004002
.NET Framework常见问题及解决方法汇总,
1093 0
|
C++ Windows
WindowsDLL修复专家,MSVCP**、DLL修复vcruntime**、DLL修复、`.Net Framework`缺失、DirectX类DLL修复、VC运行库修复
Windows DLL修复专家是一款专为解决因DLL文件缺失、版本错误导致的软件或游戏无法运行问题的系统工具。它支持一键扫描和修复各类DLL异常,涵盖MSVCP、vcruntime、.NET Framework、DirectX等多种常见问题。具备自动检测、备份还原功能,确保修复过程安全可靠。适用于软件报错、系统异常及新系统适配场景,降低用户手动修复门槛,提升系统稳定性与兼容性。
474 3
|
11月前
.NET Framework 3.5离线安装包合集下载
本文介绍了如何获取和安装.NET Framework运行库离线合集包。用户可通过提供的链接下载安装包,安装过程简单,按提示逐步操作即可完成。安装时可选择所需版本,工具会自动适配架构,无需手动判断,方便高效。
7633 0
|
开发框架 缓存 监控
NET Framework 到 .NET 5/6 的迁移是重大的升级
本文详细介绍了从 .NET Framework 4.8 迁移到 .NET 5/6 的过程,通过具体案例分析了迁移策略与最佳实践,包括技术栈评估、代码迁移、依赖项更新及数据库访问层的调整,强调了分阶段迁移、保持代码可维护性及性能监控的重要性。
332 3
|
机器学习/深度学习 编解码 算法
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation
《nnU-Net: 自适应框架用于基于U-Net的医学图像分割》是一篇2018年的论文,发表在Nature上。该研究提出了一种自适应的医学图像分割框架nnU-Net,能够自动调整模型的超参数以适应不同的数据集。通过2D和3D U-Net及级联U-Net的组合,nnU-Net在10个医学分割数据集上取得了卓越的性能,无需手动调整。该方法强调数据增强、预处理和训练策略等技巧,为医学图像分割提供了一个强大的解决方案。
1024 0
【小样本图像分割-4】nnU-Net: Self-adapting Framework for U-Net-Based Medical Image Segmentation