Web开发

注册

 

发新话题 回复该主题

NET开发在Web应用程序中使用异常处 [复制链接]

1#
白癜风早期如何治疗 http://news.39.net/bjzkhbzy/180326/6126358.html
.NET开发-异常处理语句1.概述一个完整的.NET应用程序是离不开异常处理的,否则当应用程序无法访问时,我们也不知哪里出了问题,且给用户返回的错误页面也很不友好。因此可以使用异常处理语法来解决在未知情况下出现的问题,例如,如果.NET应用程序连接SQLServer数据库出现了问题,此时如果使用了异常处理,就会在操作ADO.NET对象时抛出异常,并做出进一步的处理,记录异常问题并给用户一个友好的回馈页面。C#异常处理语句(异常不报错,比如添加字段不匹配)错误是直接报错,编译不过去,语法错误,逻辑出错。异常是指例外情况。C#主要异常处理语句主要有:throw、try...catch、try...catch...finally2.抛出异常throw语句C#中的Throw是抛出异常语句,当问题出现时,编写代码让程序抛出一个异常。Exception是异常的基类。如下代码抛出一个异常:protectedvoidButton1_Click(objectsender,EventArgse){thrownewException(出错了);}运行结果如下图所示:抛出异常-图1在上图中,已经抛出了异常,这是我们主动抛出异常的,就是让大家明白异常的发生情况。在C#中,Exception表示在应用程序执行过程中发生的错误。Exception是所有异常的基类。存在System名称空间下。3.捕获异常try…catchC#中的try…catch语句是捕获异常语句,可以根据捕获的异常按情况进行处理。其中try是必须项,用于捕获异常,不可省略。一个try块标识了一个将被激活的特定异常代码块。try后可跟一个或多个catch块。try是异常处理语句结构中,捕获异常的部分,catch是异常处理语句结构中,处理异常的部分。如下C#代码用来处理异常:protectedvoidButton1_Click(objectsender,EventArgse){try{thrownewException(出错了);}catch(Exceptionex){Response.Write(ex.Message);}}在此代码中,在catch语句中直接将错误信息显示出来了,但是并没有像图1那样抛出异常了,让用户感受到友好访问。运行此代码的结果如下:友好访问页面-图2这样就给用户一个很好的友好访问体验,避免了错误的产生。再看如下C#代码:protectedvoidButton1_Click(objectsender,EventArgse){try{doubled=Convert.ToInt32(ABC);}catch(Exceptionex){Response.Write(ex.Message);}}在此代码中,由于字符串”ABC”是不能转换为double类型的,所以强制类型转换肯定会出错。但是由于使用了捕获异常语句try…catch,所以这个错误就给避免掉了。如下图所示:捕获异常-图3上图中并没有出调试错误,而是显示了错误信息,这样对客户来说,是一种良好的友好访问体验。4.finally块finally语句是指C#异常处理(try…catch)中无论是否出现异常总是被执行的代码块。如下C#代码:protectedvoidButton1_Click(objectsender,EventArgse){try{doubled=Convert.ToDouble(.);}catch(Exceptionex){Response.Write(ex.Message);}finally{Response.Write(出错或不出错都执行的代码。);}}运行出的结果如下:图4try不仅可以和catch配合使用,还可以和finally配合使用。try{doubled=Convert.ToDouble(.);}finally{Response.Write(出错或不出错都执行的代码。);}注意:try要么和catch一起使用,要么和finally一起使用,不能单独使用。try...catch的使用-图5在上图中,出错了无法编译通过的错误,try语句落单了,这是不正确的,需要与catch或finally配合才可以实现异常的处理。.NET开发者要养成在程序添加异常的情况,但要注意,在代码的调试阶段,未发布之前,尽量不要使用异常处理,否则出现了问题,也查不出是哪里出了问题。但是在发布阶段,在一些关键代码中,要添加异常处理语句,以便在以后的维护中能快速找到问题所在及给用户一个友好访问的体验。C#深入编程-线上视频图文课堂配套课后技能作业+理论考试+源码淘宝¥购买已下架
分享 转发
TOP
发新话题 回复该主题