正在加载图片...
hapter 9: Error Handl 由于“异常处理”是Java唯一的正式报告错误的方式,而且Java编译 器还对此作了强制要求,因此即使不学异常处理,也可以写出很多本书中 的例程。本章会介绍如何正确地处理异常以及,如何定义你自己的异常 以供方法出问题的时候使用。 基本异常 “异常条件( exceptional/ condition)”是一种能阻止正在运行的方法或 其某一部分继续运行下去的问题。把异常条件同普通问题区分开来,这点 很重要。遇到普通问题的时候,你在当前的运行环境下有足够的信息来处 理这个困难。对于异常条件,由于你得不到足够的用以处理这个问题的信 息,因此不能在“当前的运行环境下( in the current context)”继续运 行下去。你只能跳出当前的运行环境,并且把问题交到上层的运行环境。 这就是抛出异常的时所发生的事情。 除法就是一个例子。如果知道会除以零的话,还是应该去测试一下的。但 是被除数是零又代表什么呢?或许你知道。你可以根据问题的上下文,决 定如何处理零作分母的情况。但是如果这不是一个预料中的值,因此你不 知道该如何处理的话,那就必须抛出一个异常,而不是顺着执行的路径继 续下去了。 当你抛出异常的时候,有几件事会随之发生。首先要像创建其它Java对 象那样,创建一个异常对象:在堆里,用new。然后停下当前的执行路 径(这条路是不能再继续下去了),再将异常对象的 reference从当前运行 环境当中弹岀去。现在异常处理机制开始接管程序了,它会去找到一个合 适的地方来继续执行这个程序。这个地方就是“异常处理程序 ( exception handler)”,其功能就是将程序从问题中恢复过来,于是程 序或者是尝试去换一条运行路径,或者是继续运行下去。 举一个抛异常的简单例子,看看t这个 reference。它可能还没有经过初 始化,因此你应该先检查一下再用它去调用方法。你可以创建一个表示错 误信息的对象,并把这个对象“抛出”当前的运行环境,这样就能把出错 的信息传递到更高层的运行环境中了。这被称为“抛出一个异常 ( throwing an exception)。”就像这里看到的: if(t throw new NullPointerException () 这样就抛出了异常,于是你就——一在当前运行环境下——一无需再为这个问 题操心了。自然会有人来处理的。我们这就把他介绍给你 异常的参数 第2页共3页 www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.comChapter 9: Error Handling with Exceptions www.wgqqh.com/shhgs/tij.html email:shhgs@sohu.com ✞ 2 ✟ ✠ 3 ✟ ÂkèZ78 Java .^PA/0@A#µ¬ Java ! 1³÷»…Ò2;3#Ɓ4ŽèZ78#$žS+„ä[5! 6%7~89¶ýPQ78èZST#¶ýe:±•èZ# S;@n„34"Ž  èZ©ª(exceptional condition)^?'<=P(@nt U>^>'?@(´34 èZ©ªA<34B'(`#R¯ ä;CA<34"#±F*(DE-FGGH`7 8R\HI÷kèZ©ª#Âk±FGS78R\34G H#Ɓ'F*(DE(in the current context)?@( ´±5'J„F*(DE#i¬ 34 gK(DE R L„èZ,0ü¢  Mn ^\6N¶·LM~MSO¿#³´P,^+ /MQOR ø†‡ST tU±LM±žS V34gW#Ú e¶ý78O»'X «+¶·R^\YZ!s#Ɓ± LM¶ý78¿#K L„^\èZ#µ[‰\]? @´… F±L„èZ"#-^ª¢~ˆ)0ü_;ôÎbU9 Java ÷ `KO#Îb^\èZ÷`Êa# newxyF*\ ](R©\'þ?@´…)#þDèZ÷` referen ce bF*( DEF!c„´1èZ782(d|ò%&…#9~´e^\f E@`?@R\%&R\@ èZ78%& (exception handler)#Ug' D%&b34!hi=`#k% &tjk,´l^©(\]#tj?@(´ m^\LèZno6N# t R\ referen ce9ž'³À-Ì=p dÛ#Ɓ±§¨^þ9´º@n±žSÎb^\øù GH÷`#i R\÷`L„F*(DE#RO ' „ GHIqórK(DE!…R/"L„^\èZ (throwing an exception) ôRÊ if(t == null) throw new NullPointerException(); RO L„…èZ#k± ššF*(DEššþR\3 4윅•x~-`78£:R ›89J± 
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有