异常的捕获与抛出:
RuntimeException或RuntimeException的子类都属于不受检查的异常,这种异常可以不用trycatch处理;
典型的有:
NullPointerException
IndexOutOfBoundsException
除了RuntimeException以外,继承自Exception的异常称为受检查的异常,这种异常我们必须try catch或重新抛出
通过try catch 语句来捕获并处理代码
try{
。。。执行代码块
}catch(异常类型 异常变量){
。。。异常处理代码
}
注意:不能单独使用try或者catch
假如现在try catch了一段代码,当这个try语句块中的某行代码产生异常时,那么try语句块就终止执行,而去执行
catch中的代码。这个时候假如catch后面还有代码,那么这些代码会继续执行。
假如此时不能确定怎样处理捕获的异常,那么可以重新抛出异常,抛出异常的关键字为throw
比如throw new RuntimeException(“我是运行时异常”);
对于抛出后的RuntimeException异常,在调用时可以不必用try catch来捕获并处理,但是对于Exception这类受检查异常,则首先需要在抛出异常所在的方法上加上异常声明,在调用抛出异常的方法时必须捕获并做相应处理或者重新抛出。
在方法抛出这类异常时,需要在方法签名后面加上异常声明,关键字为throws
比如 :
public static void test3() throws Exception
在调用这类方法(test3)时,必须try catch或者重新抛出
可以catch多层异常,catch的顺序是从子类到父类
不可以catch相同的异常
自定义异常:
在方法里面抛出这个异常
public static void test3() throws Exception{
throw new Exception();
}
调用方法时必须处理这个异常,要么try catch,要么重新抛出。
try {
test3();
} catch (Exception e) {
e.printStackTrace();
}
finally关键字:
finally通常和try catch一起使用,无论发生异常与否,都会调用finally代码块,在一般情况下,我们会在finally代码块里实现资源清理的功能,比如数据库连接关闭,IO释放,Socket关闭等。
finally{
System.out.println(“我关闭了连接”);
}
转载于:https://blog.51cto.com/7915791/1308749