- 异常关键字
try…catch是一种积极处理异常的方式
throws是一种消极处理异常的方式
throws:如果代码发生错误,就把这个错误异常类型声明在方法后面,谁调用,谁处理
注意:throws代表有可能会抛出异常
注意:如果最后一层是main方法,记着try…catch…,否则异常就传到JVM中了,后面的代码也不能正常执行了 注意:异常可以向上传递
注意:我们可以一次性向外声明多个编译时异常,谁调用,谁处理,类型,顺序,个数要一致
注意:向外声明的异常类型越具体,对调用者越好,很明确异常类型,可以快速的处理异常
注意:如果一个方法向外声明了一个异常,那么调用者必须声明一个大于等于这个异常的类型,反之则不行
throw:在方法体中抛出一个异常对象,表示一定会抛出异常
在开发中,有时候,我们需要手动抛出一个异常对象,使得这个代码的走向,去另外一个地方
注意:throw表示一定会抛出异常,无论代码对错
注意:throw抛出的是一个异常对象
面试题:throws和throw的区别?
1:位置
throws出现在方法头
而throw出现在方法体。
2:抛出区别
throws表示出现异常的一种可能性,并不一定会发生这些异常;声明的是一个异常类型
throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3 处理异常方式
两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,
但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
编程习惯
1:在写程序时,对可能会出现异常的部分通常要用try{…}catch{…}去捕捉它并对它进行处理;
2 :用try{…}catch{…}捕捉了异常之后一定要对在catch{…}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
3: 如果是捕捉IO输入输出流中的异常,一定要在try{…}catch{…}后加finally{…}把输入输出流关闭;
4:如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。
既要制造异常,还要处理异常
public static void show(String url){
try {
throw new NullPointerException();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("你好吗");
/*if(url.equals("http://www.baidu.com")){
//request.url("http://www.baidu.com"); //正确跳转
}else{
try {
throw new Exception(url);
} catch (Exception e) {
// request.url("http://www.error.com");
e.printStackTrace();
}
}*/
//System.out.println(10/2);//正确代码
//throw new NullPointerException(); //异常代码
//return;
//System.out.println("123123"); //异常后面的代码
}
public static void main(String[] args) throws Exception {
show("http://www.baidu.com");
}