概念
用强制规定的形式来消除错误处理过程中随心所欲的因素。
基本异常
异常情形是指阻止当前方法或作用域执行的问题。
在抛出异常后,首先,同java中其他对象的创建一样,将使用new在堆上创建异常对象。然后,当前的执行路径被终止,并且从当前环境中弹出对异常对象的引用,此时,异常处理机制接管程序,并且,开始寻找一个恰当的地方来执行程序。
if(t==null)
throw new NullPointerException();
//t可能未被初始化,所以在使用这个对象前先调用其方法,会先对引用进行检查。可以创建一个代表错误信息的对象,并且把它从当前环境中“抛出”。把错误信息传播到了“更大”的环境中处理。
异常如果发生问题,他们将不允许程序沿着其正确的路径走下去。捕获异常
异常处理程序:
try{
//code that might generate exception
}catch(Type id){
//handle exception of type
}
当异常被抛出时,异常处理机制将负责搜寻参数和异常类型相匹配的第一个处理程序。然后进入catch子句才能得到执行,此时认为异常得到处理。
例子:
public class ExceptionTest {public static void execute() throws Exception {
System.out.println(“execute…”);
throw new Exception();
}public static void main(String[] args) {
try {
execute();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}自定义异常
public class MyException extends Exception{
public MyException(){
super();
}
public MyException(String mag){
super(mag);
}
}
//在类中使用异常
public class ExceptionTest {
public static void execute(String a) throws MyException {
System.out.println("execute...");
if("true".equals(a)){
throw new MyException("参数不能为 true");
}
}
}
//捕获自定义异常
public static void main(String[] args) throws MyException {
execute("true");
}
使用finally进行清理
对于一些代码,希望无论try块中的异常是否被抛出,他们都能得到执行。这通常适用于内存回收之外的情况。
在try中存在return语句,那么首先会执行finally中的代码,再返回。