(1)catch后,下面的代码会继续执行;但是如果throws了 下面的代码就不会执行。
(2)在主函数调用子函数时,子函数报错如果用catch处理,主函数不会报错;子函数用throw 抛出错误,主函数才会报错。
public class Test {
public static void main(String[] args) throws Exception {
subFun();
System.out.println("after");
}
static void subFun(){
try {
Integer i = 4;
ArrayList list = new ArrayList();
list.add(i);
System.out.println((String) list.get(0));
}catch(Exception e){
//throw e; //如果不抛出错误 主函数不会报错并且继续向下执行;如果抛出,主函数报错并停止执行
}
}
}
总之,catch的意义就是捕捉错误并使后面的代码继续执行 (你如果catch之后不作任何处理 比如e.printStackTrace() 那么看起来就完全像是无事发生。。)
而throw抛出错误后,后面的代码不会执行。