- 1、本文档共67页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
*08例外处理受检查的异常和不受检查的异常:受检查的异常Exception类及其非RuntimeException子类属于受检查的异常;受检查的异常要受编译系统的检查。如果一个方法可能会引发这类异常而又不能适当处理,那么应该用throws子句声明抛出;调用者或者用try-catch语句捕捉处理,或者也用throws子句声明抛出,并由它的调用者处理。也就是说,对方法中可能会抛出的受检查异常,程序员必须捕捉处理或声明抛出,两者必选其一,否则编译系统将给出错误信息。*08例外处理受检查的异常和不受检查的异常:不受检查的异常:类Error和类RuntimeException及其子类属于不受检查的异常,如图8-1所示。不受检查的异常不受编译系统的检查。对这类异常,程序员可以捕捉或声明抛出,但通常可以不加理会。*08例外处理异常类的方法和属性(1)异常类的构造方法publicException()创建新异常。publicException(Stringmessage)用字符串参数message描述异常信息创建新异常。(2)异常类的方法publicStringtoString()返回描述当前异常对象信息的字符串。publicStringgetMessage()返回描述当前异常对象的详细信息。publicvoidprintStackTrace()在屏幕上输出当前异常对象使用堆栈的轨迹,即程序中先后调用了哪些方法,使得运行过程中产生了这个异常对象。*08例外处理所谓异常的引发是指因程序运行出现异常情况而产生异常对象、进而转入异常处理过程的情形。Java运行系统在发现异常情况时会自动引发异常。自动引发异常如下例:8.2引发异常*08例外处理【例8-1】在发生异常情况时由运行系统引发异常classDemo{publicstaticvoidmain(String[]args){inta=args.length;System.out.println(a=+a);intb=42/a;int[]c={1};c[4]=99;System.out.println(Aftertry/catchblocks.);}}*08例外处理throw引发异常异常既可以在发生异常情况时由运行系统引发,也可以在程序中用throw语句显式引发。格式如下:thrownewArithmeticException();*08例外处理【例8-2】下面程序在被减数a小于减数b时将引发ArithmeticException异常。1)classTest{2)staticintmethod(inta,intb){3)if(ab)4)thrownewArithmeticException(ab);//产生异常5)returna-b;6)}7)publicstaticvoidmain(String[]args){8)method(3,5);9)}10)}下面是该程序的输出结果:Exceptioninthreadmainjava.lang.ArithmeticException:abatTest.method(Test.java:4)atTest.main(Test.java:8)*08例外处理如果一个方法引发的是受检查的异常且自己没有捕捉,那么它必须用throws子句声明抛出;该方法的调用者如果不对异常进行捕捉,那么也必须用throws子句声明抛出。下面是包含throws子句的方法定义的语法格式:返回类型方法名(参数列表)throws异常类型列表{...}8.3声明抛出异常*08例外处理【例8-3】下面程序与例8-2中的程序基本相同,只是method方法可能抛出的是一个受检查的Exception异常,但它既没有捕捉也没有声明抛出,所以是不能通过编译的。1)classTest{2)staticintmethod(inta,intb){3)if(ab)4)throwne
文档评论(0)