《Java与面向对象程序》-5.2异常处理_第1页
《Java与面向对象程序》-5.2异常处理_第2页
《Java与面向对象程序》-5.2异常处理_第3页
《Java与面向对象程序》-5.2异常处理_第4页
《Java与面向对象程序》-5.2异常处理_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习目标理解Java异常处理机制能编写异常处理程序主要内容捕获异常抛出异常1.捕获异常检查型异常,处理方法有两种:捕获异常和声明抛出异常。语法结构:try{

//程序代码块}catch(ExceptionSubClass1e){

//对ExceptionSubClass1异常的处理}catch(ExceptionSubClass2e){

//对ExceptionSubClass2异常的处理}1.捕获异常程序中产生异常后,产生异常的语句所在的代码块后面的语句将不会被执行,而直接跳到catch语句进行异常的匹配判断。如果b为0,则块中的程序产生ArithmeticException类的异常,后面的输出语句将不会被执行,程序自动转到catch,执行catch块中的异常处理程序。try{c=a/b;System.out.println(“try语句块执行结束”);}catch(ArithmeticException){System.out.println(“除数为0,a/b的结果无法求出!”);}1.捕获异常当存在多种可能的异常需要捕获时,一个try块可以应对多个catch块,那究竟会执行哪个catch块中的异常处理程序呢?例如:如果在程序中try块产生IndexOutOfBoundsException类的异常,则首先被第一个catch块捕获,因为Exception类是IndexOutOfBoundsException类的间接父类;后面的catch块永远没有机会到达,程序将出现“Unreachablecatchblock……”错误。正确的顺序是IndexOutOfBoundsException异常类放在Exception类的前面来捕获。try{//可能存在异常的代码}catch(Exceptione){//异常处理1}catch(IndexOutOfBoundsException){//异常处理2}1.捕获异常【例5-2】带有finally代码块的异常处理程序需要注意的是,finally中的代码块有一种情况不会被执行,那就是在try…catch中执行了System.exit(0)语句。System.exit(0)表示退出Java虚拟机,虚拟机停止后,任何代码都不能再执行了。publicclassEx5_2{publicstaticvoidmain(String[]args){try{inty=15/0;System.out.println(y);}catch(Exceptione){System.out.println(“捕获的异常为:”+e.getMessage());}finally{System.out.println(“已经进入finally代码块”);}System.out.println(“退出finally,继续执行”);}}1.抛出异常如果在当前方法中对产生的异常不想进行处理,或者不能确切地知道该如何处理这一异常事件时,可以使用throws子句将异常抛出,交给该方法的调用者进行处理,当然调用者也可以继续将该异常抛出。throws声明抛出异常的语法格式为:返回值类型方法名([参数1,参数2…])throws<异常类1>[,<异常类2>……]{

…}1.抛出异常publicvoidread()throwsjava.io.IOException{

……}在throws子句中可以同时指明多个要抛出异常,多个异常之间用逗号隔开。例如:publicstaticvoidmain(Stringargs[])throwsjava.io.IOException,IndexOutOfBoundsException{

…}2.抛出异常注意:子类中如果重写了父类中的方法,则子方法中声明抛出的异常类只能是被重写方法中throws子句所抛出异常类的子集,也就是说,子类中重写的方法不能抛出比父类方法中更多的异常。classFather{voidt()throwsjava.io.IOException{}}classSonextendsFather{voidt()throwsException{}}2.抛出异常程序的子类Son在重写父类的t方法时,声明抛出的异常比父类中t方法声明抛出的异常范围更大(因为Exception异常类是IOException异常类的父类),所以在编译程序时就会产生编译错误。接下来通过例5-3来了解声明抛出异常和捕获异常的用法。2.抛出异常【例5-3】声明抛出异常和捕获异常的程序例子publicclassEx5_3{publicstaticvoidmain(String[]args){//下面定义了一个try…catch语句来捕获异常

try{intresult=divide(15,3);//调用divide()方法

System.out.println(result);}catch(Exceptione){//对捕获到的异常进行处理

e.printStackTrace();

}

}//下面的方法实现了两个整数相除,并使用throws关键字声明抛出异常

publicstaticintdivide(intx,inty)throwsException{intresult=x/y;returnresult;}}捕获异常

抛出异常try{

//程序代码块}catch(ExceptionSubClass1e){

//对ExceptionS

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论