文档介绍:异常处理
第七章
回顾
String类字符串的定义及其基本操作
StringBuffer类字符串的定义及其基本操作
2
目标
异常的基本概念
异常的处理
异常类的层次结构
创建自己的异常
3
异常基本概念
运行时发生的错误称为异常。处理这些异常就称为异常处理。
发生异常后此前分配的所有资源都将保留在相同的状态,这将导致资源漏洞。
Public class ExceptionDemo1{
public static void main(String args[]){
int a=0;
(8/a);
}
}
4
异常处理机制
异常处理机制执行过程:
出现异常事件时,Java系统自动产生一个异常对象,然后将这个对象传递给Java运行时系统,这个例外产生和提交的过程称为抛弃例外(throw);当Java运行时系统得到例外对象以后,它将会寻找处理这一例外的代码,找到能处理这一例外的方法以后,运行时系统把当前例外对象交给这个方法进行处理,这一过程称为捕获(catch)。
5
Throwable类
异常类的层次和主要子类
Java异常指的是一个继承Throwable类的实例,它有两个子类:Exception和Error。。
异常类的方法和属性
祥见p130。
6
异常处理
(1)由系统自动处理。
(2)使用try~catch~finally语句。
(3)使用throw语句直接抛出异常或使用throws语句间接抛出异常。
7
try~catch~finally语句
语法结构:
try
{ 可能产生异常的代码段; }
catch(异常类名1 对象名1)
{ 处理语句组1; }
catch(异常类名2 对象名2)
{ 处理语句组2; }
……
finally
{
最终处理语句;
}
8
throw语句和throws子句
(1)throw语句
用来明确地抛出一个异常,
throw 异常;
然后在包含它的所有try块中从内向外寻找与其匹配的catch语句块。
(2)throws语句
如果一个方法可能导致异常但不处理它,此时可在方法声明中包含 throws 子句,发生了异常,由调用者处理。throws列举方法可能引发的所有异常。
这对于除Error或RuntimeException及它们子类以外类型的所有异常是必要的。
<方法名>(<参数行>)[throws<异常类1>,<异常类2>…]
{if (异常条件1成立)
throws new 异常类1();
if (异常条件2成立)
throws new 异常类2();
…
}
9
创建自己的异常
内置异常不可能始终足以捕获所有错误,因此需要用户自定义的异常类
用户自定义的异常类应为 Exception 类(或者Exception 类的子类)的子类
创建的任何用户自定义的异常类都可以获得 Throwable类定义的方法
class ArraySizeException extends NegativeArraySizeException{
ArraySizeException() {
super(“您传递的是非法的数组大小”);
}
}
该类是Exception的子类
10