asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.Net之C#中的异常处理


发布日期:2021年12月25日
 
ASP.Net之C#中的异常处理

基础知识

程序开发中数据流按照一定的规律进行传输如果用户和程序之间的交互完全按照预定的效果运行程序不会出现问题可以假设所处理的数据都符合要求通过界面作格式判定所有资源都正确但是为了系统的安全需要处理存在的隐患不能对数据安全抱有理想化的想法

在ASPNET中错误处理分为两个层面页面输入信息验证CLR提供的结构化错误处理机制

在页面输入信息判断中可以采用JavaScriptVBScript等脚本进行判断也可以使用NET 环境下带有的Validation和正则表达式的方式将信息在提交执行处理前进行格式判断格式判断包括网络地址电子信箱输入字符串长短和输入信息的数据类型的判断等

结构化异常处理是CLR的基础部分具有以下特点可以跨语言异常可以在一种语言中引发在另外一种语言中捕捉处理分层处理一个异常可以包括另外一个异常这意味着系统可以捕获底层对象(如数据层和业务层)的异常引发自己的异常包含有底层对象的异常这样可以将异常进行细致分类使得异常更容易处理

结构化异常处理一般要使用部分代码

)Try是程序中可能出现错误的操作部分

)Catch是用来处理各种错误的部分(可以有多个)必须正确排列捕获异常的Catch子句范围小的Exception放在前面的Catch即如果Exception之间存在继承关系就应把子类的Exception放在前面的Catch子句中

)Finally 块的代码用来清理资源或执行要在Try块末尾执行的其他操作(可以省略)无论是否产生异常Finally块都会执行

结构化异常处理

异常是在程序设计中无法避免的错误设计的程序必须能够处理所有可能出现的错误所以要全面考虑异常处理将一切可能出现异常的代码都进行try的捕捉然后建立自己的异常处理机制按照不同的异常情况进行分类处理

异常产生的时候需要知道是什么原因造成的错误以及错误的相关信息根据实际情况抛出具体类型的异常然后建立捕捉机制捕捉到异常时做出具体的处理在编写代码过程中可以使用系统已定义的相关异常类以及自定义的异常类来实例化并抛出需要的异常如一个不可能实现的接口可以抛出SystemNotSupportedExceptiion的异常来告诉接口的调用者

在处理异常的时候应该将可处理的具体异常分别在catch 块中作出相应处理否则程序将终止运行针对每一种异常以不同方式处理避免对所有异常做出一样的处理并且在异常产生时给用户一个友好的提示(最终用户对系统异常的具体内容是不明白的这就需要给出相关的信息提示和解决方案或告诉联系管理员等)并在可能的情况下给用户提供选择(确定和取消)让用户来决定系统的运行方向同时程序中要将异常做日志记录不是所有异常都是必须记录的例如一些可捕捉并且已经安排程序进行处理的异常就不需要记录它

可以采取如下形式记录异常

在文件中记录异常便于技术人员查看所发生的异常从而日后对程序进行改进

在数据库中记录异常数据库支持查询这样在后期就能够对异常进行分类查询等操作便于查看与管理

在Eventlog中记录异常能够远程操作方便系统管理员监控所有计算机的异常

除了可预料到的异常外还有未预料到的异常这类异常是无法进行管理的发生后将系统程序转移到特定的错误页面提示用户系统出错结束程序做好日志能为解决和调试问题带来很多方便要避免使用了TryCatch但没有处理异常的情况否则就相当于给异常放行(这种情况还不如根本不去捕获)

异常处理还应该注意在Finally块中释放相关资源还原相关设置信息等收尾工作基本程序结构如下

try

{

int x = /; //会抛出一个除数为的异常

}

catch

{

// //在这里捕捉到这个异常然后进行相关处理

}

finally

{

// //在这里做最后的清理或是其他工作

}

本章的异常处理是针对容易出现错误的地方(操作数据库)应用此技术但是只是捕捉到SQL异常后给用户一个错误提示并没有进一步作程序的处理

C#中常见异常类

Exception所有异常对象的基类

SystemException运行时产生的所有错误的基类

IndexOutOfRangeException当一个数组的下标超出范围时运行时引发

NullReferenceException当一个空对象被引用时运行时引发

InvalidOperationException当对方法的调用对对象的当前状态无效时由某些方法引发

ArgumentException所有参数异常的基类

ArgumentNullException在参数为空(不允许)的情况下由方法引发

ArgumentOutOfRangeException当参数不在一个给定范围之内时由方法引发

InteropException目标在或发生在CLR外面环境中的异常的基类

ComException包含COM类的HRESULT信息的异常

SEHException封装Win结构异常处理信息的异常

SqlException封装了SQL操作异常

上一篇:ASP.NET防盗链演示代码

下一篇:ASP.NET 2.0中XML数据的处理