java异常处理文档.doc_第1页
java异常处理文档.doc_第2页
java异常处理文档.doc_第3页
java异常处理文档.doc_第4页
java异常处理文档.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

Java异常处理的基本概念一、错误与异常根据错误性质将运行错误分为两类:错误和异常。1致命性的错误 如程序进入了死循环,或递归无法结束,或内存溢出,这类现象称为错误。2非致命性的异常 如运算时除数为0,或操作数超出数据范围,或打开一个文件时,发现文件并不存在,或欲装入的类文件丢失,或网络连接中断等,这类现象称为异常。二、异常处理机制1抛出异常当程序发生异常时,产生一个异常事件,生成一个异常对象,并把它提交给运行系统,再由运行系统寻找相应的代码来处理异常。这个过程称为抛出(throw)一个异常。一个异常对象可以由Java虚拟机生成,也可以由运行的方法生成。2捕获异常异常抛出后,运行时系统从生成对象的代码开始,沿方法的调用栈逐层回溯查找,直到包含相应处理的方法,并把异常对象交给该方法为止,这个过程称为捕获(catch)一个异常。3异常处理的类层次Java通过错误类(Error)和异常类(Exception)来处理错误和异常,而它们都是Throwable类的子类,分别用来处理两组异常。它们的层次结构如图9-1所示。yccl.swf 4程序对错误与异常的三种处理方式:程序不能处理的错误 Error类为错误类。程序应避免而不捕获的异常 对于运行时异常类(RuntimeException),如数组越界等,无须使用try-catch-finally语句,这类异常应通过程序调试尽量避免而不是去捕获它。必须捕获的异常 有些异常在编写程序时是无法预料了,如文件没找到异常、网络通信失败异常等。因此,为了保证程序的健壮性,Java要求必须对可能出现这些异常的代码使用try-catch-finally语句,否则编译无法通过。【例6-1】 文件没有找到异常类。import java.io.*;public class Try3 public static void main(String args)FileInputStream fis=new FileInputStream(autoexec.bat);System.out.println(I can not found this file!);5常见的公用异常类下面介绍常见的异常类,它们都是RuntimeException的子类。 算术异常ArithmeticException 空指针异常NullPointerException 类型强制转换异常ClassCastException数组负下标异常NegativeArraySizeException数组下标越界异常ArrayIndexOutOfBoundsException6.2 异常类的产生、捕获和处理一、异常的产生以【例6-2】产生数组下标越界异常和除数为0异常为例引出异常的产生。产生数组下标越界异常和除数为0异常public class Try1public static void main(String args)int i=0;int a=5,6,7,8;for(i=0;i5;i+)System.out.println(a+i+=+ai);二、使用try-catch-finally语句捕获和处理异常在Java的异常处理机制中,提供了try-catch-finally语句来捕获和处理一个或多个异常,语法格式如下:try catch(ExceptionType1 e) finally 其中,是可能产生异常的代码;是捕获某种异常对象时进行处理的代码,ExceptionType1代表某种异常类,e为相应的对象;是其后必须执行的代码,无论是否捕获到异常。catch语句可以有一个或多个,但至少要有一个catch语句,finally语句可以省略。try-catch-finally语句的作用是,当try语句中的代码产生异常时,根据异常的不同,由不同catch语句中的代码对异常进行捕获并处理;如果没有异常,则catch语句不执行;而无论是否捕获到异常都必须执行finally中的代码。【例6-3】异常捕获和处理。public class Try2public static void main(String args) int i=0;int a=5,6,7,8;for(i=0;i5;i+) try System.out.println(a+i+=+ai);catch(ArrayIndexOutOfBoundsException e) System.out.println(数组下标越界异常!);finally System.out.println(fianlly i=+i);通过这个例子我们再来深入讨论try-catch-finally语句,以及使用时要注意的问题。 try语句try语句大括号 中的这段代码可能会抛出一个或多个异常。也就是说,当某段代码在运行时可能产生异常的话,需要使用try语句来试图捕获这个异常。 catch语句catch语句的参数类似于方法的声明,包括一个异常类型和一个异常对象。catch语句可以有多个,分别处理不同类的异常。Java运行时系统从上向下分别对每个catch语句处理的异常类型进行检测,直到找到与类型相匹配的catch语句为止。如果程序产生的异常和所有catch的处理的异常都不匹配,则这个异常将由Java虚拟机捕获并处理,此时与不使用try-catch-finally语句是一样的,这显然也不是我们所期望的结果。因此一般在使用catch语句时,最后一个将捕获Exception这个所有异常的超类,从而保证异常由对象自身来捕获和处理。 finally语句try所限定的代码中,当抛出一个异常时,其后的代码不会被执行。通过finally语句可以指定一块代码,无论try所指定的程序块中抛出异常,也无论catch语句的异常类型是否与所抛出的异常的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。该语句是可以省略的。P116 例6.2 6.3 抛出异常一、使用throw语句抛出异常使用throw语句抛出异常格式如下:throw 其中,throw是关键字,是创建的异常类对象。【例6-4】抛出异常。public class Try5public void run(byte k) byte y=1,i=1;System.out.print(k+!=); /不换行输出for(i=1;iByte.MAX_VALUE/i) /Integer类的常量,表示最大值throw new Exception(overflow); /溢出时抛出异常elsey=(byte)(y*i);catch(Exception e)System.out.println(exception:+e.getMessage();e.printStackTrace(); /显示异常信息System.exit(0);System.out.println(y); public static void main(String args)Try5 a=new Try5();for(byte i=1;i10;i+)a.run(i);声明异常:throws 例:定义一个方法,该方法会产生除数为零异常,抛出该异常,在主方法中调用该方法时处理这个异常.P120 例6.6 自定义异常将“欢迎welcome”写入到hello.txt中,然后再读取该文件内容。import java.io.*;public class aaa public static void main(String args)File file=new File(hello.txt);byte b=欢迎welcome.getBytes();tryFileOutputStream out =new FileOutputStream(file);out.write(b);out.close();FileIn

温馨提示

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

评论

0/150

提交评论