文档介绍:Chapter 12异常处理
对于计算机程序来说,错误和异常情况都是不可避免的。Java提供了丰富的出错与异常理机制
12-1 异常的基本概念
异常实际上是程序中错误导致中断了正常的指令流的一种事件。
12-1-1 为什么需要异常处理?
在没有异常处理的语言中,我们必须使用if-else或switch等语句,配合想得到的错误状况来捕捉错误。因而也导致了程序运行效率低的情况。
Java的异常处理机制恰好改变了这种缺点。它具有易于使用,可自行定义一场类,允许我们抛出异常,且不会脱慢运行速度等有点。
12-1-2 简单的异常范例
// app12_1, 下标值超出范围
public class app12_1
{
public static void main(String args[])
{
int arr[]=new int[5]; //容许5个元素
arr[10]=7; //下标值超出容许范围
("end of main() method !!");
}
}
程序在编译时并不会产生错误, 运行时会产生下列的错误信息:
Exception in thread “main” at(:7)
原因在于下标值越界了,便由系统抛出ArrayIndexOutOfBoundsException这个种类的异常
12-1-3 异常处理
(1)定义
异常处理是用户程序以预定的方式响应运行错误和异常的能力。
基本方式当一个方法引发一个异常后,可将异常抛出,由该方法的直接或者间接调用者处理异常。
异常处理的语法
try{
要检查的程序语句;
…
}
catch(异常类变量名称){
一场发生时的处理语句;
…
}
finally{
一定会运行的程序代码;
}
try块
catch块
finally块
异常处理的执行顺序
程序块发现异常并抛出“有异常类产生的对象”.
,并做相应处理.
,最终都要执行finally块里的程序.
由此我们便可绘出如图12-1所示的流程图
异常处理的范例1
// app12_2,异常的处理
public class app12_2
{
public static void main(String args[])
{
try // 检查这个程序块的的程序代码
{
int arr[]=new int[5];
arr[10]=7;
}
catch(ArrayIndexOutOfBoundsException e)
{
("index out of bound!!");
}
finally // 这个块的程序代码一定会运行
{
("this line is always executed!!");
}
如果抛出异常,便
运行此快的程序代码
("end of main() method !!"); } } /* app12-2 OUTPUT------------index out of bound!!this line is always executed!!end of main() method !!-------------------------------*/
异常处理范例2
// app12_3,异常信息的选择public class app12_3{public static void main(String args[ ]){ try{ int arr[ ]=new int[5]; arr[10]=7;}
catch(ArrayIndexOfBoundsException e){ (“index out of bound!!”); (“Exception=“+e); } (“end of main() method!!”); }}
/*----------------------------------------------------------------------
index out of bound!!
Exception=