- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章-异常
4.3 异常的处理 2. 抛出异常 到目前为止,我们只是获取了被Java运行时系统引发的异常。然而,程序可以用throw语句抛出明确的异常。throw语句的通常形式如下: throw ThrowableInstance; 这里,ThrowableInstance一定是Throwable类类型或Throwable子类类型的一个对象。简单类型,例如int或char,以及非Throwable类,例如String或Object,不能用作异常。有两种可以获得Throwable对象的方法:在catch子句中使用参数或者用new操作符创建。程序执行在throw语句之后立即停止;后面的任何语句不被执行。最紧紧包围的try块用来检查它是否含有一个与异常类型匹配的catch语句。如果发现了匹配的块,控制转向该语句;如果没有发现,次包围的try块来检查,以此类推。如果没有发现匹配的catch块,默认异常处理程序中断程序的执行并且打印堆栈轨迹。 * 4.3 异常的处理 详见例 4.7 是一个创建并引发异常的例子程序,与异常匹配的处理程序再把它引发给外层的处理程序。 该程序有两个机会处理相同的错误。首先,main()设立了一个异常关系然后调用demoproc( )。demoproc( )方法然后设立了另一个异常处理关系并且立即引发一个新的NullPointerException实例,NullPointerException在下一行被捕获。异常于是被再次引发,从而看见了图4-7所示的结果。 该程序还阐述了怎样创建Java的标准异常对象,特别注意第10行:throw new NullPointerException(demo); 这里,new用来构造一个NullPointerException实例。所有的Java内置的运行时异常有两个构造函数:一个没有参数,一个带有一个字符串参数。当用到第二种形式时,参数指定描述异常的字符串。 * 4.3 异常的处理 如果对象用作 print( )或println( )的参数时,该字符串被显示。这同样可以通过调用getMessage( )来实现,getMessage( )是由Throwable定义的。 3. throws语句 如果一个方法可以导致一个异常但不处理它,它必须指定这种行为以使方法的调用者可以保护它们自己而不发生异常。做到这点可以在方法声明中包含一个throws子句。一个throws子句列举了一个方法可能引发的所有异常类型。这对于除Error或RuntimeException及它们子类以外类型的所有异常是必要的。一个方法可以引发的所有其他类型的异常必须在throws子句中声明。如果不这样做,将会导致编译错误. 下面是包含一个throws子句的方法声明的通用形式: type method-name(parameter-list) throws exception-list { // body of method } * 4.3 异常的处理 这里,exception-list是该方法可以引发的以有逗号分割的异常列表。 下面是一个不正确的例子。该例试图引发一个它不能捕获的异常。因为程序没有指定一个throws子句来声明这一事实,程序将不会编译。 // 该程序不能被编译. class ThrowsDemo { static void throwOne() { System.out.println(Inside throwOne.); throw new IllegalAccessException(demo); } public static void main(String args[]) { throwOne(); } } * 4.3 异常的处理 例 4.8 为编译该程序,修改上述程序。需要改变两个地方:第一,需要声明throwOne()引发IllegalAccessException异常。第二,main()必须定义一个try/catch语句来捕获该异常。 归纳注释: 为了写出健壮的代码,Java 编程语言要求,当一个方法在栈(即,它已经被调用)上发生Exception(它与Error 或RuntimeException 不同)时,那么,该方法必须决定如果出现问题该采取什么措施。 程序员可以做满足该要求的两件事: 第一,通过将try…catch…finally块纳入其代码中,在这里捕获给被命名为属于某个超类的异常,并调用方法处理它。即使catch 块是空的,这也算是处理情况。 * 4.3 异常的处理 第二,让被调用的方法表示它将不处理异常,而且该异常将被抛回到它所遇到的调用方法中。它是按如下所示通过用thr
您可能关注的文档
最近下载
- 大学有机化学第1章绪论ppt课件.pptx VIP
- Unit 1 Happy Holiday Section B 1a-1d(学案)2025-2026学年人教版英语(2024)八年级上册.docx VIP
- 医美抗衰美容干细胞抗衰产品项目知识课件.pptx VIP
- 合肥市残疾人证课件.ppt VIP
- 牛津译林版初中英语新教材七年级上册全册单词表.xlsx VIP
- 《企业数字化转型之课件解决方案》课件.ppt VIP
- 工程临时用电施工组织设计.doc VIP
- 欧科PT300变频器说明书.pdf
- 2025年广东南粤集团有限公司招聘笔试备考试题及答案解析.docx VIP
- 飞行器总体设计.pptx VIP
文档评论(0)