Head First C# 中文版 第10章 异常处理 page462

本文解释了程序中异常处理的基本概念,包括已处理与未处理异常的区别、如何通过特定异常处理提高程序稳定性,以及异常处理的不同结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

问:等一会。这么说每次我的程序遇到异常,除非我写了代码去捕获异常,它都会停止正在做的事情?这怎么会是好事儿呢?


答:异常最好的一方面就是可以引起你的注意,帮你找到出错的地方和原因。任何时候你的出现出现了异常,那就是你未预期的事情发生了。如果出了一些问题,而你对此一无所知,程序的结果就有可能是错的,而从那一刻起程序的行为就和你写代码时预期的大不一样了。想像一下你的出现出错了,而你并不知晓,你的用户开始给你打电话告诉你数据错误了,你的程序不稳定。所以异常打断程序正在做的事儿是件好事儿。这强迫你在问题还好找并容易修改的时候去处理问题。


问:好吧,那什么是已处理的异常?什么是未处理的异常呢?


答:程序抛出异常的时候,运行时会去你的代码中去寻找匹配的catch 块。如果你写了匹配的 catch 块,这个异常就是已处理的,否则就是未处理的。


问:指明要捕获的某种异常那一块是怎么回事?为什么我要那么做呢?


答:你应该捕获某种特定的异常而不是去捕获Exception 。比如,假如你的 Excuse 类想要防止一个 FileNotFoundException ,你就可以写 catch FileNotFoundException )。这时如果出现了文件未找到的问题,程序可以处理 -- 但是如果出现了 IO 异常或者序列化异常,你写的异常处理就无法捕获这些异常。


问:如果写了一个没有指明特定异常的catch 块的话会怎么样?


答:这样的catch 块可以捕获 try 块会抛出的任何异常。


问:如果没指定特定异常的catch 块可以捕获所有异常,那我为什么要指定某种特定异常呢?


答:问得好,这是因为某种特定的异常会要求某种特定的响应。


问:所有的异常处理的顺序都是try/catch/finally


答:不是的,你可以把它们混合起来用。可以写很多个catch 块,也可以不写 catch 块。只有 try/finally 块是合法的。我们稍后会讨论这些的。


 

 

 

 

未处理的异常意味着你的程序将以不可预知的方式


运行。所以程序遇到一个未处理的异常的时候就会


停止下来。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值