介绍ASP.NET异常管理

开发 后端
本文介绍ASP.NET异常管理架构,在你所有的系统中应该很好的封装并抽象其记录和报告等的细节。

在任何应用系统开发中,ASP.NET异常管理对开发人员来说都是一个关键领域。作为一个开发人员,你应该采用一种合适的、能让你编写健壮且高质量代码的异常管理策略。如果使用得当,异常管理将是一个很强大的概念而且使你的开发工作变的很容易。然而,一个不合适的异常处理将会使你的应用系统性能降低。

在你钻研这些之前,要先搞清楚ASP.NET异常管理是什么,这点很重要。一般来说异常就表示“打破系统预定的假设”。“异常”和“错误”是不一样的,为了解释清楚,我们来看两个例子:

示例一

我们假设你试图向一个文件写入数据,而你的应用程序也认为这个文件在正确的路径上。如果不在,就会抛出一个异常。而话说回来,如果你的职责是跟踪此文件,那么代码里还有(找不到文件的)异常那将是一个不好的编码习惯,这种情况应该被校验代码处理(而不是异常)。

示例二

再让我们假设一个一般的ASP.NET程序中,你正试图更新数据库中所有必需的字段。你的应用程序认为此数据库连接可用,假设实际上这个连接是不可用的……抛出异常是一个解决方案。而我们又把话说回来,如果更新数据库的必填字段时出现有几个值为空的字段,那抛出异常就没有必要了,这些处理应该由校验代码完成。

如何处理异常

作为一个开发人员,你应该感受到通过try, catch, finally块来构建一个结构化异常处理机制的优点。.NET框架提供了一大堆异常处理层次来处理不同种类的异常。所有的异常都继承自 Exception(基类)。你可以通过继承来实现自定义错误处理以扩展异常处理机制。不幸的是,很多开发人员都误用了这种架构能力。一个随时要记着的事是当一个异常发生在运行时时(这个架构)应该如何运作?一般有以下三种情况:

忽略异常,让它在调用栈里上升而被其它的catch块捕获。

捕获异常,同时为你的应用程序执行必要的动作,如果你不想再次在异常中抛出异常的话。

捕获异常,并用其它异常覆盖它。这样和你的应用程序有更密切的关系。异常覆盖是为了避免打破(架构中的)抽象层次。你可以通过你抛出的异常的 InnerException属性指定原异常是什么,这样就可以把你现有的异常用一个新的异常来覆盖了(更与你系统有关的)。为了了解异常覆盖,让我们来看一个能引起IOException异常的方法,你可以在应用级别使用LoadingException 或 FailtoLoadInfoException来覆盖原有的IOException异常,这样比把底层的IOException给用户看到要来的好些。

一个应用程序的异常处理框架应该有以下几种(要求):

探测异常:
◆执行代码清除;
◆内部异常覆盖;
◆内部异常替换;
◆记录并报告错误信息;
◆建立能被外部监视的事件以帮助系统操作;

在开始你应该建立一个一致的,健壮的ASP.NET异常管理架构,在你所有的系统中应该很好的封装并抽象其记录和报告等的细节。

【编辑推荐】

  1. ASP.NET中的数据源控件
  2. 介绍ASP.NET的XML Web服务使用
  3. ASP.NET应用程序的web.config文件
  4. 概述ASP.NET XML Web服务
  5. ASP.NET中实现HTTP请求
责任编辑:佚名 来源: IT168
相关推荐

2009-07-29 17:26:39

ASP.NET页面

2009-07-27 17:00:29

ASP.NET主机

2009-07-20 16:12:21

ASP.NET Fra

2009-07-23 14:17:41

2009-07-29 10:02:49

ASP.NET上传

2009-07-21 10:40:36

ASP.NET Pro

2009-07-29 09:14:36

ASP.NET网站

2009-09-10 14:02:08

LINQ ASP.NE

2009-08-19 09:23:40

ASP.NET Rou

2009-07-22 16:05:34

ASP.NET AJA

2009-07-29 17:23:17

ASP.NET表单

2009-08-03 17:35:07

ASP.NET WebASP.NET编程工具

2009-07-28 17:15:17

ASP.NET权限管理

2009-07-21 15:11:14

ASP.NET Rou

2009-07-24 13:39:03

ASP.NET弹出窗口

2009-08-05 10:36:08

开发ASP.NET

2009-08-05 15:57:03

ASP.NET控件ID

2009-07-20 10:53:59

ASP.NET MVC

2009-07-29 10:35:51

ASP.NET缓存

2009-02-06 14:11:36

ASP.NET.NET全局异常处理
点赞
收藏

51CTO技术栈公众号