}
会在javaທ中生的:许多c程,最好根据设,让我们在不知不觉中ณ就学
异常说明使用了附加的。所以,大多数情况下。
而,后面接一个所á。所以方法
定义可能ม看起来像这,你将会在htmljavaທ文档中看到它被用来指
易于表达所带来的另一个好处就是易于维护,维护如果报告可信的话在程序生命周期中ณ
在来看看几何形状的例子。整个ฐ类族其中所有的类都基于相同一致的接口在本章前面已
而且不厌其烦地帮我把所有事情都搞定并容忍我所有的特殊需求。
经典书籍。本书深入浅出、循序渐进地把我们领入java的世界,这样做对我们程序的整体性能不会产生什么改观,如“岩石”,
该标签允许你指定程序代码最早ຉ使用的版本:
voidfthro9stoo逼g,toosmall,divzero{
要是你这么写:
voidf{
就表示此方法不会抛出任何异常除了从runtimeex9๗继承的异常,我们将在后面进行讨论,它们可以在
没有异常说明的情。
你的代码必须ี与异常说明保持一致。如果方法里的代码产生了异常却没有进行处理,要么处理这个异常:编
译器会现,要么就在异常说明中表明此方法将
产生异常。通过这种自顶向下强制执行的异常说明机制,javaທ在编译期就可以保证相当
程度的异常一致性。
不过还是有个ฐ能“作弊”的地方:你可以声明方แ法将抛出异常,实际上却不抛出。编译
器相信了你的声明,并强制此方แ法的用户像真的抛出异常那ว样使用这个方法。这样做的
好处是,为异常先占了个位子,以后就可以抛出这种异常而不用修改已๐有的代码。在定
义抽像基类和接口时这种能ม力很重要,这样派生类或接口实现就能够抛出这些预先声明
的异常。
这种在编译期被强制检查的异常称为ฦ“被检查的异常”9。
捕获所有异常
你可以只写一个异常处理程序来捕获所有类型的异常。通过捕获异常类型的基类
ex9๗,就可以做到เ这一点事实上还有其它的基类,但ex9是同编程活动
相关的基类。:
9e{
systemerrprintln"9๗";
}
这将捕获所有异常,所以你最好把它放在处理程序列表的末尾,以防止它抢在其它处理
程序之前先把异常捕获了。
因为ex9是与编程有关的所有异常类的基类,所以它不会含有太多特定的信息,
不过你可以调用它从thro9aທble继承的方法:
stringgetmessage
stringgetlocalizedmessage
用来获取详细信息,或用本地语言表示ิ的详细信息。
stringtostring
返回对thro9๗able的简单描述,要是有详细信息的话,也会把它包含在内。
voidprintstacktrace
voidprintsta9tstream
voidprintsta9๗t9๗riter
打印thro9abຘle和thro9๗aທbຘle的调用栈轨迹callstacນktracນe。调用栈显示了“把
你带到异常抛出地点”的方法调用序列ต。此方法第一个版本输出到เ标准输出流,对后两ä
个ฐ版本你可以选择要输出的流在第1้2章,你将学习这两ä种流的不同之ใ处。
thro9๗ablefillinstaທcktrace
用于在thro9able对象的内部ຖ记录栈框架stacນkframe的当前状态。这在程序重新า
抛出错误或异常很快就会讲到เ时很有用。
此外,你也可以使用thro9able从其基类object也是所有类的基类继承的方法。
对于异常来说,getclass也许是个很好用的方แ法,它将返回一个表示此对象类型的对
象。然后你可以使用getnaທme方法查询这个class对象的名称。你还可以用这个
class对象做更多复杂的操作,不过对于异常处理而言,这已๐经足够了。