Java异常处理不解之处
现有下面两段异常处理的方式
?
1:
class A{ public void funcOfA() throws Exception{ try{ /* 此方法可能抛出异常ExceptionTypeB, * ExceptionTypeC,ExceptionTypeD等等 */ funcTest(); }catch(ExceptionTypeB eb){ //忽略ExceptionTypeB异常不作处理 }catch(Exception e){ //对于非ExceptionTypeB异常进行抛出处理 throw e; } }}class B{ public void funcOfB(){ A a = new A(); try{ a.funcOfA(); }catch(Exception e){ //此处的e异常是否是非ExceptionTypeB异常 //直接进行异常处理 } }}
?2:
class A{ public void funcOfA() throws Exception{ /* 此方法可能抛出异常ExceptionTypeB, * ExceptionTypeC,ExceptionTypeD等等 */ funcTest(); }}class B{ public void funcOfB(){ A a = new A(); try{ a.funcOfA(); }catch (ExceptionTypeBe b){ //忽略ExceptionTypeB异常,不进行处理 }catch(Exception e){ //直接进行异常处理 } }}
?
比较1和2两种异常处理模式,发现结果差异很大。
?其中方式2得到的结果是想要的结果。
?方式1结果有问题。
?
哪位大侠能解惑。不胜感激!!!