第9章 违例差错控制
<2>捕获所有违例我们可创建一个控制器,令其捕获所有类型的违例.具体的做法是捕获基础类违例类型exception(也存在其他类型的基础违例,但exception是适用于几乎所有编程活动的基础).如下所示:catch(exception e) { system.out.println("caught an exception");}这段代码能捕获任何违例,所以在实际使用时最好将其置于控制器列表的末尾,防止跟随在后面的任何特殊违例控制器失效.对于程序员常用的所有违例类来说,由于exception类是它们的基础,所以我们不会获得关于违例太多的信息,但可调用来自它的基础类throwable的方法:string getmessage()获得详细的消息.string tostring()返回对throwable的一段简要说明,其中包括详细的消息(如果有的话). 【程序编程相关:J2ME中Random类的使用】
java的基本原理就是“形式错误的代码不会运行”.<1>在java中,对那些要调用方法的客户程序员,我们要通知他们可能从自己的方法里“掷”出违例.这是一种有礼貌的做法,只有它才能使客户程序员准确地知道要编写什么代码来捕获所有潜在的违例.当然,若你同时提供了源码,客户程序员甚至能全盘检查代码,找出相应的throw语句.但尽管如此,通常并不随同源码提供库.为解决这个问题,java提供了一种特殊的语法格式(并强迫我们采用),以便礼貌地告诉客户程序员该方法会“掷”出什么违例,令对方方便地加以控制.这便是我们在这里要讲述的“违例规范”,它属于方法声明的一部分,位于自变量(参数)列表的后面.违例规范采用了一个额外的关键字:throws;后面跟随全部潜在的违例类型.因此,我们的方法定义看起来应象下面这个样子:void f() throws toobig, toosmall, divzero { //...} 【推荐阅读:Eclipse 相关的一些资源】
<3>标准java违例java包含了一个名为throwable的类,它对可以作为违例“掷”出的所有东西进行了描述.throwable对象有两种常规类型(亦即“从throwable继承”).其中,error代表编译期与系统错误,我们一般不必特意捕获它们(除在特殊情况以外).exception是可以从任何标准java库的类方法中“掷”出的基本类型.此外,它们亦可从我们自己的方法以及运行期偶发事件中“掷”出.
<4>违例准则用违例做下面这些事情 :(1) 解决问题并再次调用造成违例的方法.(2) 平息事态的发展,并在不重新尝试方法的前提下继续.(3) 计算另一些结果,而不是希望方法产生的结果.... 下一页