阅读938 返回首页    go 阿里云 go 技术社区[云栖]


《数据结构与抽象:Java语言描述(原书第4版)》一I2.2.2 现在处理:try-catch块

本节书摘来华章计算机《数据结构与抽象:Java语言描述(原书第4版)》一书中的第2章 ,[美]弗兰克M.卡拉诺(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 着 罗得岛大学  新英格兰理工学院 辛运帏 饶一梅 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

I2.2.2 现在处理:try-catch块

要处理异常,必须先标出可能引起异常的Java语句。还必须决定要寻找哪个异常。方法的文档及throws子句会告诉我们可能发生哪个受检异常。这就是我们要处理的异常。
处理异常的代码含有两段。第一段,try块(try block),含有可能抛出异常的语句。第二段含有一个或多个catch块。每个catch块(catch block)含有处理或捕获(catch)某种类型异常的代码。所以,因为调用方法readString而处理IOException的代码可能有如下的形式:
image

try块中的语句的运行,与没有这个块时是一样的。如果没发生异常,则try块全部执行,然后执行catch块后的语句。但如果在try块内发生了IOException,则执行立即转到catch块。现在已经捕获了异常。
catch块的语法类似于一个方法定义。标识符e称为catch块参数(catch block parameer),它表示catch块将处理的IOException的对象。虽然catch块不是方法定义,但在try块内抛出一个异常,类似于调用一个catch块,其中参数e表示一个实际的异常。
作为一个对象,每个异常都有存取方法getMessage,它返回抛出异常时创建的描述字符串。通过显示这个字符串,可以告诉程序员所发生异常的性质。
catch块执行完后,执行它后面的语句。但如果问题是严重的,最好的反应是中断程序吗?catch块可以调用exit方法来终止程序,如下所示:
image

赋给System.exit的参数0,表示程序的正常结束。虽然我们遇到了一个严重问题,但我们有意中断程序,这在操作系统看来是正确的。

注:如果没有处理受检异常,或在throws子句中声明它,编译程序会抱怨。有些异常可以在方法的定义中处理,而有些可以在它的throws子句中声明。一般地,不处理或声明运行时(未检)异常,因为它们表示程序的一个错误。抛出这样的异常时会中断程序的执行。
注:其参数是C类型的catch块,可以捕获类C或C的任何后代类的异常。

最后更新:2017-06-26 18:31:58

  上一篇:go  linux常用的关机和重启命令
  下一篇:go  磁盘阵列RAID讲解