有一个方法, 假设是
public void add(int a, int b){
try{
System.out.print(a + b);
}catch (Execption e){
// 此处做异常处理
}
}
然后另一处调用的地方这么写
try{
add(1, 3);
}catch(Execption e){
// 异常处理
}
阅读代码的时候看到类似这种代码,就有个疑问,那个add方法,既没有返回值,也没有异常抛出
那么调用的时候try catch还有什么用呢?
对于api来说,越深的代码越应该抛出异常,让上层调用方进行处理,如果全部在内部catch掉,查找错误是非常费劲的,对于上层而言,应该尽可能在一个地方统一捕获异常进行处理,spring的intercept或者java的代理机制都可以实现全局异常的拦截。
这是个好习惯,对于方法调用,容易出异常的不管方法内部怎么处理,外部都进行异常捕获,增强程序的健壮性。
另外,当工程大的时候,很多方法内部处理可能会随时变化,所以也加异常处理。
遇到自己能够处理的异常,不影响程序执行的异常,就吃掉它。
甚至,利用异常有时候可以实现一些特别的技巧,比如跳出多重循环,快速检测某种环境是否正常。
自己不能处理的一定要丢出,让上层去处理,否则程序进入莫名其妙的错误而没有异常丢出,这样的代码很难调试,也不健壮。