介绍ASP.NET异常管理 |
本文标签:ASP.NET异常管理 在任何应用系统开发中,ASP.NET异常管理对开发人员来说都是一个关键领域 。作为一个开发人员,你应该采用一种合适的、能让你编写健壮且高质量代码的异常管理策略 。如果使用得当,异常管理将是一个很强大的概念而且使你的开发工作变的很容易 。然而,一个不合适的异常处理将会使你的应用系统性能降低 。 在你钻研这些之前,要先搞清楚ASP.NET异常管理是什么,这点很重要 。一般来说异常就表示“打破系统预定的假设” 。“异常”和“错误”是不一样的,为了解释清楚,我们来看两个例子: 示例一 我们假设你试图向一个文件写入数据,而你的应用程序也认为这个文件在正确的路径上 。如果不在,就会抛出一个异常 。而话说回来,如果你的职责是跟踪此文件,那么代码里还有(找不到文件的)异常那将是一个不好的编码习惯,这种情况应该被校验代码处理(而不是异常) 。 示例二 再让我们假设一个一般的ASP.NET程序中,你正试图更新数据库中所有必需的字段 。你的应用程序认为此数据库连接可用,假设实际上这个连接是不可用的……抛出异常是一个解决方案 。而我们又把话说回来,如果更新数据库的必填字段时出现有几个值为空的字段,那抛出异常就没有必要了,这些处理应该由校验代码完成 。 如何处理异常 作为一个开发人员,你应该感受到通过try, catch, finally块来构建一个结构化异常处理机制的优点 。.NET框架提供了一大堆异常处理层次来处理不同种类的异常 。所有的异常都继承自 Exception(基类) 。你可以通过继承来实现自定义错误处理以扩展异常处理机制 。不幸的是,很多开发人员都误用了这种架构能力 。一个随时要记着的事是当一个异常发生在运行时时(这个架构)应该如何运作?一般有以下三种情况: 忽略异常,让它在调用栈里上升而被其它的catch块捕获 。 捕获异常,同时为你的应用程序执行必要的动作,如果你不想再次在异常中抛出异常的话 。 捕获异常,并用其它异常覆盖它 。这样和你的应用程序有更密切的关系 。异常覆盖是为了避免打破(架构中的)抽象层次 。你可以通过你抛出的异常的 InnerException属性指定原异常是什么,这样就可以把你现有的异常用一个新的异常来覆盖了(更与你系统有关的) 。为了了解异常覆盖,让我们来看一个能引起IOException异常的方法,你可以在应用级别使用LoadingException 或 FailtoLoadInfoException来覆盖原有的IOException异常,这样比把底层的IOException给用户看到要来的好些 。 一个应用程序的异常处理框架应该有以下几种(要求): 探测异常: 在开始你应该建立一个一致的,健壮的ASP.NET异常管理架构,在你所有的系统中应该很好的封装并抽象其记录和报告等的细节 。 |