版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java而言是一种异常。有了异常就要有相应的处理方式。本章将介绍异常的基本Java3种(异常属于运行时错误语法错误(syntaxerrorsjava语言规则。errors逻辑错误(logicerrors:没有按照预期的方案执行。(ritetcExetioNPoiterceton(FieNoFoxcetoJavaJava中,所有的异常都是以类的类型存在,除了内置的异常类之外,Java也可以自定义异常类。此外,Java的异常处理ifswitch等语句,配合所想得到的错误状况if语句,有时候这样也未必能捕捉到所有的错误,而且这样做势必导致程序运行效率的Java程序设计时,应充分地利用Java的异常处理机制,以增进程序的稳定性及效率。JavaJava是如何处理异常的。TestException7_1是一个错误的程序,它在数组时,下标值已超过了数组下标所容许的publicclasspublicstaticvoidmain(Stringintarr[]=newint[5]; //容许5个元素 //下标值超出所容许的范围System.out.println("endofmain()method!!");}}6Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:atJava的默认异常处理机制会先抛出异常、然TestException7_1的异常发生后,Java便把这个异常抛了出来,可是抛出来之后没有程1try代码块中。try程序块若是有异常发生时,程序的catch块。照从小到大的顺序进行异常。finally块里的程序代码。finally通常用作资源的释放工作。try程序块是否有异常catch()括号内欲捕捉的异常相同。try-cath块之后继续执行。 异常处理的流程“异常类”指的是由程序抛出的对象所属的类,例如TestException7_1中出现的publicclasspublicstaticvoidmain(Stringargs[]){ //检查这个程序块的代码intarr[]=new //}catch(ArrayIndexOutOfBoundsExceptione){} //}}}1、程序第7行一个arr的整型数组,并开辟了5个数据空间catch语句中去处理,程序通过finally代码块统异常是属于ArrayIndexOutOfBoundsException10~138ArrayIndexOutOfBoundsException12行会输出“数组下标信息,下例说明了类对象e的应用:publicclasspublicstaticvoidmain(Stringargs[]){intarr[]=newint[5];}System.out.println("异常:"+e);//显示异常对象e}}}异常:java.lang.ArrayIndexOutOfBoundsException:10想象成是方法的参数,而eArrayIndexOutOfBoundsException类的对象。对象e接收到java.lang.ArrayIndexOutOfBoundsExceptionjava.langArrayIndexOutOfBoundsException类所属的包。由前面的知识,我们知道,直接打印对象可以输出内容,说明该类重写了toString()方法。所以,前面我们直接打印e,其实就是e.toString()。 Java默认的异常处理机制做处理。但这种处理方式,Java通常只能输出异常信息,接着便终止程序的运行。如TestException7_1的异常发生后,Java默认的异常处理机制会显示出:Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsException:10atTestException7_1.main(TestException7_1.java:6)7-2绘出了异常处理机制的选择流程。
异常处理的方异常可分为两大类:java.lang.Exception类java.lang.Error类java.lang.Throwable7-3为Throwable7-3ThrowableError与Exception类统称为异常类,但这两者本质上还是有不同的。Error类Error。TestException7_2ArrayIndexOutOfBoundsException就是属于这种异常。从异常类的继承架构图中可以看出:ExceptionIOException、RuntimeException是较常用的两种。RuntimeException即使不编写异常处理的程序代码,依RuntimeException不同的是,IOException一定要编写异常处理的程序代码才行,RuntimeExcpetion如下:ArithmeticException0除,运算得出的结果。try-catch来接收所抛出的异常。抛出异常有下列两种方式:12在程序中抛出异当程序出现错误时,系统会自动抛出异常,除此之外,java也允许程序自行抛出异常,throw语句完成。其语法格式如下:throw异常类实例对象throw后面抛出的是一个异常类的实例对象,下面来看一个实例:publicclasspublicstaticvoidmain(Stringargs[]){inta=4,b=0; //抛出异}
System.out.println(a+"/"+b+"="+a/b);//catch(ArithmeticExceptione){}}}抛出异常为:java.lang.ArithmeticException:一个算术异常1TestException7_4是要计算a/bb0b0,则系统会抛出ArithmeticException0这个数。2、在try块里,利用第8行来判断除数b是否为0。如果b=0,则运行第9throwArithmeticExceptionb0a/bb0try913catch()捕捉到异常。new关键字来产生对象。指定方法抛出异方法名称(参数…)throws12,…TestException7_5是指定由方法来抛出异常的,如下所示:publicclasspublicstaticvoidmain(String[]args){System.out.println("商为div(10,0));}publicstaticintdiv(inta,intb)throwsException{returna/b;}}TestExeption7_5.java:7:未报告的异常java.lang.Exception;必须对其进行捕捉或以System.out.println("商为div(a^1throwsExceptiontry-catch来捕捉,否则会编译报错。TestExeption7_5divtry-catch的语句对其进publicclasspublicstaticvoidmain(String[]System.out.println("商为div(10,}catch(Exceptione){}}publicstaticintdiv(inta,intb)throwsException{returna/b;}}如果在main()方法后再用throwsException的话,那么程序也是依然可以编译通过throws抛出异常的方法时,可以将此异常在方法中再向上传递,而JVM进行处理了。在JDK中提供的大量API方法之中的异常类,但这些类在实际开发中往往并classextends{…}Exception构造方法:publicException(StringException的构造方法:super("message");Exception已提供相当丰富的方法,通过继承,子类均可使用它classDefaultExceptionextendsException{publicDefaultException(Stringmessage){ //调用Exception}publicStringreturntoString方法}publicStringreturngetMessage方法}}}publicclasspublicstaticvoidmain(Stringargs[]){doublemoney=if(money<Math.pow(2,20))//throwDefaultExceptionthrownewDefaultException("金额不足}} //显示异常对象e的内容}}}多态中异常的抛出原在多态中,异常的抛出有一定的原则classOneExceptionextendsException}classTwoExceptionextendsException}classThreeExceptionextendsException}classFathervoidshow()throwsOneException,TwoException}}publicclassTestextendsFather//voidshow()throwsTwoException,ThreeException}publicstaticvoidmain(String[]args){newTest().show();}}classOneExceptionextendsException}classTwoExceptionextendsException}interfaceFootballvoidplay()throws}interfaceBasketballvoidplay()throws}publicclassTestimplementsFootball,Basketball//接口不存在交集,不能抛出的异publicvoidplay()}publicstaticvoidmain(String[]args){newTest().play();}}如果在方法内处理了异常则不需要抛出,如果需要调用者处理异常则需要使用throwsJava1.4assert。可以把断truefalse系统会报告一true,能够使程序员确信程序。误)5.0以后将是一个错误。 boolean条件2、 boolean条件:详细信例如,如果要进行如下的计算时:doubleysqrt(x)是一个开平方运算,x必须为正才不会出错。为了检查传入的参数是否为正,可 x>=doubley=assertx>=0:"x>=0";doubley=Math.sqrt(x);xassertAssertionError默认情况下,断言是关闭的。可以通过-enabl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024卫生室装修与医疗废物处理设施建设合同范本3篇
- 2024年租房中介服务合同
- 二零二五年度版权许可及发行合同(影视)3篇
- 专用软件升级服务合同(2024修订版)版B版
- 二零二五年度在线教育平台讲师劳动合同模板3篇
- 2025年湘师大新版第一册生物下册月考试卷含答案
- 2024版德佑房屋租赁合同
- 新苏教版一年级数学下册第四单元第1课时《认识20~99》教案
- 2025年度智慧城市大数据分析与云计算服务合同3篇
- 2025-2030年中国冰晶石行业市场发展态势及投资潜力分析报告
- 施工项目环保策划方案
- 内科护理学-第二章-呼吸系统疾病病人的护理试题
- 班组长培训之品质意识培训
- 道德经中德文对照版
- 公路工程随机抽样一览表(路基路面现场测试随机选点方法自动计算)
- 2021版中医症候医保对应中医症候医保2
- 2023年山东省青岛市中考化学试题(含答案解析)
- 安徽华塑股份有限公司年产 4万吨氯化石蜡项目环境影响报告书
- 世界奥林匹克数学竞赛6年级试题
- 药用植物学-课件
- 文化差异与跨文化交际课件(完整版)
评论
0/150
提交评论