异常处理
异常处理
三类异常处理
1.检查异常:检查异常通常是用户错误或者不能被程序员所见的问题。
2.运行时异常:运行时异常是一个程序在运行过程中可能发生的、可以被程序员避免的异常类型
3.错误:实际上,错误根本不是异常,但却是用户或程序员所无法控制的问题。
异常的控制流程
对于异常处理有三种选择
1. 捕获这个异常,不让它沿着调用栈继续向下抛出
2. 捕获这个异常,并继续向下抛出
3. 不捕获这个异常,从而导致方法从调用栈中被弹出,异常对象继续抛给调用栈下面的main()方法。
Thowable类
异常的一个公共父类Java.lang.Throwable。Throwable类有两个子类Exception和Error。
捕获异常
用关键字try和catch来捕获异常
try{ 被保护的代码
}catch(异常的名称 e){ 捕获块}
多个catch块
try{ 被保护的代码
}catch(异常的名称 e){ 捕获块1}
catch(异常的名称 e2){ 捕获块2}
catch(异常的名称 e3){ 捕获块3}
异常捕获与多态性
虽然一个try块后可以跟随多个catch块,但是catch块不能简单地以任意顺序列出。当异常发生的时候,catch块会依照它们的排列顺序被依次检查。由于多态性的存在,一个catch块有可能不会被检查到。
异常处理及声明的规则
一个检查异常要么被处理,要么被声明。
声明异常 用关键字throws
public void deposit(double amount)throws RemoteException{}
抛出异常用关键字throw
int a=1/a;
if(a==0){
throw new ArrayIndexOutofBoundsexception();}
finally关键字
用于在try 块后创建一个代码块。finally代码块总会执行,不管异常是否发生
try{ 被保护的代码
}catch(异常的名称 e){ 捕获块1}
catch(异常的名称 e2){ 捕获块2}
catch(异常的名称 e3){ 捕获块3}
finally{}
方法重写与异常
子方法不能抛出父类方法更多的异常
自定义异常
自己定义规则以及自己的处理流程的异常

浙公网安备 33010602011771号