




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章异常处理,12.1Java的异常处理机制12.2Java的异常处理语句,12.1Java的异常处理机制Java的异常处理机制用于及时有效地处理程序运行中的异常错误。按照这种机制,人们在程序中监视可能发生异常的程序块,一个程序中的所有异常被收集起来放到程序的某一段中处理。这就使人们不必在被监视的程序块中多处插入处理异常的代码,使完成正常功能的程序代码与进行异常处理的程序代码分开。,12.1.1异常处理机制的结构Java中引入了异常和异常类,并且定义了很多异常类。每个异常类代表一类运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,系统都会产生一个相应异常类的对象,并由系统中相应的机制来处理,以确保不会产生死机、死循环或其他对操作系统有损害的结果,从而保证了整个程序运行的安全性。,在Java程序中,当程序运行过程中发生异常时,可采用如图12.1所示的两种方式处理异常:一是由Java异常处理机制的预设处理方法来处理,即一旦程序发生异常,程序就会被终止并显示一些错误信息给用户;二是使用Java语言提供的try-catch-finally语句自行处理异常。第二种方式的优点很多,其中最主要的优点是将处理异常的代码与程序代码的主线分离开来,增强了程序的可读性;其次是可减少中途终止程序运行的可能性。,图12.1异常处理机制结构,【示例程序C12_1.java】系统自动抛出异常。publicclassC12_1publicstaticvoidmain(Stringargs)inta,b,c;a=67;b=0;c=a/b;System.out.println(a+“/”+b+“=”+c);,该程序在NetBeans环境下的运行结果如下:Exceptioninthread“main”java.lang.ArithmeticException:/byzeroatC12_1.main(C12_1.java:6)JavaResult:1,12.1.2异常类的继承关系Java中定义了很多异常类,每个异常类都代表了一类运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。这些异常类的继承结构如图12.2所示。在Java语言中所有的异常类都继承自java.lang.Throwable类。Throwable类有两个直接子类:一个是Error子类,它包含Java系统或执行环境中发生的异常,这些异常是用户无法捕捉到的;另一个是Exception类,它包含了一般性的异常,如I/O异常、SQL异常,这些异常是用户可以捕捉到的,可以通过产生它的子类来创建自己的异常处理。下面分别论述。,图12.2异常类的继承结构,(2)java.io包中的异常。,(4)包中的异常。,(5)系统定义的运行异常Exception类。,(6)系统定义的运行异常Error类。在系统定义的运行异常Error类中,除AWTError类在java.awt包中外,其余的全部在java.lang包中。java.lang包中的Error类如下:,12.2Java的异常处理语句Java语言的异常处理是通过try、catch、finally、throw和throws语句来实现的。12.2.1try-catch-finally语句在大多数情况下,系统预设的异常处理方法只会输出一些简单的信息到显示器上,然后结束程序的执行。这样的处理方式在许多情况下并不符合我们的要求。为此,Java语言为我们提供了try-catch-finally语句,使用该语句可以明确地捕捉到某种类型的异常,并按我们的要求加以适当处理,这才是发挥异常处理机制的最佳方式。try-catch-finally的结构如图12.3所示。,图12.3try-catch-finally的结构,finallyFinallyHandling/无论是否发生异常都要执行的程序代码其中:(1)try:将可能出现错误的程序代码放在try块中,对try块中的程序代码进行检查,可能会抛出一个或多个异常。因此,try后面可跟一个或多个catch。,(2)catch:其功能是捕获异常。参数ExceptionObject是ExceptionType类的对象,这是由前面的try语句生成的。ExceptionType是Throwable类中的子类,它指出catch语句中所处理的异常类型。在用catch捕获异常的过程中,要将Throwable类中的异常类型和try语句抛出的异常类型进行比较,若相同,则在catch中进行处理。(3)finally:是这个组合语句的统一出口,一般用来进行一些“善后”操作,例如释放资源、关闭文件等。它是可选的部分。,【示例程序C12_2.java】使用try-catch-finally语句自行处理异常。publicclassC12_2publicstaticvoidmain(Stringargs)inta,b,c;a=67;b=0;tryintx=newint-5;/错c=a/b;System.out.println(a+“/”+b+“=”+c);catch(NegativeArraySizeExceptione),System.out.println(“exception:”+e.getMessage();e.printStackTrace();catch(ArithmeticExceptione)System.out.println(“b=0:”+e.getMessage();finallySystem.out.println(“end”);该程序的运行结果如下:java.lang.NegativeArraySizeExceptionatC12_2.main(C12_2.java:7)exception:nullend,12.2.2嵌套try-catch-finally语句Java语言的try-catch-finally语句可以嵌套,即在try块中可以包含另外的try-catch-finally语句。【示例程序C12_3.java】使用嵌套的try-catch-finally语句自行处理异常。publicclassC12_3staticinta,b,c;publicstaticvoidmain(Stringargs)try,a=10;b=0;tryc=a/b;System.out.println(a/b=+c);catch(IndexOutOfBoundsExceptionE)System.out.println(捕捉超出索引异常);finallySystem.out.println(嵌套内层的finally区块);,catch(ArithmeticExceptionE)System.out.println(捕捉数学运算异常:b=+b);finallySystem.out.println(嵌套外层的finally区块);if(b=0)System.out.println(程序执行发生异常!);elseSystem.out.println(程序正常执行完毕!);,该程序的运行结果如下:嵌套内层的finally区块捕捉数学运算异常:b=0嵌套外层的finally区块程序执行发生异常!,12.2.3抛出异常的throw语句与throws语句Java的异常是系统在程序运行时抛出的,但编程员也可以根据实际情况在程序中抛出一个异常。在Java语言中,可以使用throw语句和throws语句抛出异常。1.throw语句throw语句用来明确地抛出一个异常。throw语句的作用是改变程序的执行流程,使程序跳到相应的异常处理语句中执行。throw语句的格式如下:throwexceptionObject,【示例程序C12_4.java】使用throw语句抛出异常。publicclassC12_4publicstaticvoidmain(Stringargs)trythrownewNullPointerException(“自编异常”);catch(NullPointerExceptione)System.out.println(“exception:”+e);该程序的运行结果如下:exception:java.lang.NullPointerException:自编异常,2.throws语句在有些情况下,不需要一个方法本身来处理异常,而是希望把异常向上移交给调用这个方法的方法来处理。此时,可以通过throws语句来处理。throws语句的格式如下:returnTypemethodName(para1,para2,)throwsexceptionList,【示例程序C12_5.java】使用throws语句抛出异常。importjava.awt.Graphics;importjava.awt.Graphics2D;importjavax.swing.JApplet;publicclassC12_5extendsJAppletstaticvoidthrowOne()throwsIllegalAccessExceptionthr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 81《牛顿第一定律 惯性》(教学设计)-2024-2025学年教科版(2024)初中物理八年级下册
- 6《景阳冈》教学设计-2023-2024学年统编版语文五年级下册
- 13 美丽的冬天(教学设计)2024-2025学年统编版道德与法治一年级上册
- 2024-2025学年高中生物 第一章 孟德尔定律 第二节 自由组合定律教学设计4 浙科版必修2
- 2024-2025学年高中物理 第9章 固体、液体和物态变化 2 液体教学设计2 新人教版选修3-3
- Unit 6 How do you feel Part B Let's talk(教学设计)-2024-2025学年人教PEP版英语六年级上册
- 葡萄胎的护理诊断
- 17 跳水教学设计-2023-2024学年五年级下册语文统编版
- 2024-2025学年高中数学 第一章 统计案例 1.2 独立性检验的基本思想及其初步应用(1)教学设计 文 新人教A版选修1-2
- 《迎接蚕宝宝的到来》(教学设计)2023-2024学年教科版三年级科学下册
- 湖南省炎德英才名校联考联合体2024-2025学年高二下学期3月月考-数学+答案
- (3月省质检)福建省2025届高三毕业班适应性练习卷英语试卷(含答案)
- 专业网格员测试题及答案
- 2025年上半年贵州黔东南州各县(市)事业单位招聘工作人员1691人笔试易考易错模拟试题(共500题)试卷后附参考答案
- 湖南省长沙市雅礼教育集团2024-2025学年高一上学期期末考试英语试卷含答案
- 2025年广东深圳高三一模英语试题及词汇解析
- 电力应急物资储备与管理
- 钕铁硼项目可行性分析报告(模板参考范文)
- 【语文】第三单元整本书阅读《骆驼祥子》圈点、批注、做笔记课件-2024-2025学年统编版语文七年级下册
- 新目录监理规划2025
- 储能项目竣工报告
评论
0/150
提交评论