编程语言应用

注册

 

发新话题 回复该主题

的NET程序员,要会使用C异常 [复制链接]

1#
2025治疗白癜风疾病最好的药是什么 http://baidianfeng.39.net/a_jiankang/250418/q8vevx5.html

C#核心开发-第18单元-调试和异常处理-第2节:异常处理语句

C#核心开发-异常处理

1.什么是异常?

程序中的异常处理提供了处理程序运行时出现的任何意外或异常情况的方法。

在.NET开发中,使用try…catch和finally异常处理语句来处理异常情况,尝试可能未成功的操作,处理失败,以及在事后清理资源。

异常不是错误,错误是指编码无法编译通过,出现的明显的问题,是需要解决才可以通过的。

而异常可能发生在程序运行过程中,或用户的操作不当遭成的,也属于BUG的一部分,也可能是输入的值没有正常运行而抛出了异常。

2.捕获和处理异常

异常是程序在运行其间产生的,不知什么时候发生,如果异常被用户碰上了,则对用户来说非常的不友好。

为了避免异常的发生,开发者要对自己开发的程序有一个预期的判断,消灭掉所有可能发生异常的问题,以提高用户体验。

在C#中,可以使用try…cath语句来捕获可能发生的异常,并对当发生了异常,应该采取什么措施来处理异常。

下面使用VisualStudio创建.NET控制台应用程序,并编写C#代码来讲解捕获异常和处理异常的情况。

图1的C#代码,在编译上是%编译通过的,代码上没有任何错误,在VS中生成结果如下:

在图2中,C#编译器已经编译通过了,从代码级别上看,没有任何问题。

现在运行一下结果,看是否能够正常运行,如下图所示:

从图3的结果上看,是能正常运行,看似没有什么问题。

但其实,图1的代码存在很大的异常问题,再运行一下:

在图4中没有输入检查,如果用户错误的输入了数量为3.99,打回车键:

出现异常了

VS给我们抛出了异常,异常信息是:“输入字符串的格式不正确。”

在此C#代码中,我们将用户输入的商品数量强制转换成了int类型,但用户输入了3.99,是小数,无法强制转换为int类型,所以抛出异常了。

这种现象就是异常,异常我们要避免掉,不然用户体验太差了。

现在我们修改一下图5的代码,在C#代码中添加异常处理,如下图所示:

try...catch语句

C#异常处理完整代码如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceYidosoft.Edu.Csharp.DebugException{classProgram{staticvoidMain(string[]args){Console.Title=一都编程-调试和异常处理;Console.Write(请输入商品名称:);stringname=Console.ReadLine();try{Console.Write(请输入商品数量:);intsum=int.Parse(Console.ReadLine());Console.Write(请输入商品单价:);doubleprice=double.Parse(Console.ReadLine());}catch(Exceptionex){Console.BackgroundColor=ConsoleColor.Red;Console.WriteLine(商品数量必须是整数。);Console.ResetColor();}Console.ReadKey();}}}

图6的代码说明如下:

(1).try语句用于将可能发生异常的代码括起来。对于将来可能会发生异常的代码,就使用try括起来。

(2).catch语句必须与try一起使用,用于当出现了异常,要如何处理,是给出友好提示,还是写入日志供后期维护使用。

运行一下图6的代码:

在图7中,当发生了异常,并没有抛出一些看不懂的英文,而是给出了我们自定义的错误消息,这样对于用户来说体验是非常好的。

3.异常后置代码处理

对于C#中的try…catch…语句,还有一种组合是:try…catch…finally。

finally不是必须的,可有可无,但try…catch中的try和catch是必须同时存在的。

finally的含义是:不管异常有没有发生,后置代码都会被执行,用来保障一些操作必须被执行,如释放资源、关闭数据库连接等,主要是为异常处理后事的,因为一旦出现异常,catch后面的代码将不再执行,但是finally中的后置代码是肯定执行的。

添加finally语句

在图8中,不管是否发生意外,都会执行一些重要的操作:

当发生代码出现异常时,finally中的后置代码还是会执行的。

总之,一个优秀合格的.NET程序员,都会在自己的程序中合理的使用异常处理语句,来避免各种异常情况,并很好的提升了软件的用户体验。

分享 转发
TOP
发新话题 回复该主题