文档介绍:JAVA语言程序设计第九章异常处理
异常是指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需要处理的文件不存在、数组下标越界等。由于异常情况总是难免的,良好的应用程序除了具备用户所要求的功能以外,还应该具备预见并处理可能发生的各种异常的功能。这种对异常情况进行处理的技术成为异常处理。
计算机系统对检查异常处理通常有两种方法,第一种是计算机系统本身直接检测程序中的错误,遇到错误给出错误信息并终止程序的运行,第二种办法是由程序员在程序中加入异常处理功能。
异常处理
:
1检查型异常:是由超出程序员控制能力的外部条件所引发的。例如:在输入和输出过程中出现的异常。因此,编译程序坚持让程序员提供处理这些情况的代码。
2非检查型异常:通常来自于程序员的失误。
JAVA的异常处理机制
JAVA提供了功能强大的异常处理机制,可以方便的在程序中监视可能发生异常的程序块,并将所有异常处理代码集中放置在程序的某处,使完成正常功能的程序代码与进行异常处理的程序代码分开。
在JAVA的异常处理机制种引进了很多用来描述和处理异常的类,称为异常类。每个异常类反映一类运行错误,类定义中包含了该类异常的信息和对异常进行处理的方法。每当程序运行过程中发生了某个异常现象,系统将产生一个相应的异常类对象,并交给系统中的相应机制进行处理,以避免死机、死循环或其他对系统有害的结果发生,保证程序运行的安全性
JAVA将异常分为Exception(异常)和Error(错误)两大类。 Exception类解决由程序本身及环境所产生的异常,而Error类处理内部系统错误。 Exception类异常可以被捕获并进行处理,而对Error类异常,程序员通常无能为力,只能在其发生时由用户按照系统提示关闭程序。
Object
Throwable
Exception
Error
异常类的继承结构
Exception 子类的继承关系
Exception
ClassNotFoundException
ClassNotSupportedException
essException
InstantiationException
InterruptedException
NoSuchMethodException
RuntimeException
ArithmeticException
ArrayStoreException
ClassCastException
IllegalArgumentException
IllegalThreadStateException
NumberFormatException
IllegalMonitorStateException
IndexOutOfBoundsException
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
NegativeArraySizeException
NullPointerException
SecurityException
考察下列方法:
public void read(String filename)
{FileReader reader=new FileReader(filename);
……
}
异常处理方法
一旦编写了可能会导致检查异常的代码时,必须采用以下两种措施中地一种:
 
2. (或捕获)异常
throws FileJNotFoundException
(1)read方法的实现者可能并不知道如何更正所出现的情况;最理想的解决方法:将异常向上传递给它的调用程序。
try{
//可能异常的程序代码
}
catch(IOException exception)
{//对应的异常处理代码
}
(2)但是,如果不希望程序在用户提供非法文件名时终止执行,则需要捕获这个异常。可用以下:
(3)有时,方法还必须执行某种操作,即使之前的语句产生了异常。例如释放不再使用的资源、关闭使用完毕的文件等。
这意味着read方法终止执行,而异常则抛给了调用它的方法。
finally
{ 必须执行的代码}
Finally块是可选项,无论是否发生异常,该块代码必定执行
捕获多个异常
//捕获数组下界越界异常,当i<=5改为i<5时执行正常
public class Exception9_1 {
public static void main(String args[]) {
try
{
int a[]={1,2,3,4,5},sum=0;
for(int i=0; i<=5; i++)sum+=a[i];
Syst