java异常匹配原则

来源:互联网 发布:剑网3刘亦菲捏脸数据 编辑:程序博客网 时间:2024/05/16 02:37

java异常匹配有两个重要原则:

  • 异常控制系统会按当前catch控制器的编写顺序来搜索,一旦找到相符的catch控制器,就认为异常已被捕获,不再进行更多的搜索。
  • catch控制器可以捕获当前异常类以及从它衍生的子类。

根据这两个原则,来做个测试,首先定义BusinessException和LoginException, BusinessException继承Exception, LoginException继承BusinessException。

class BusinessException extends Exception {    //empty}class LoginException extends BusinessException {    //empty}

那么,LoginException只能捕获LoginException, BusinessException可以捕获LoginException和BusinessException, Exception可以捕获LoginException、BusinessException和Exception

Test1 :

try {    throw new LoginException();} catch (LoginException le) {    System.out.println("LoginException catch");} catch (BusinessException be) {    System.out.println("BusinessException catch");} catch (Exception e) {    System.out.println("Exception catch");}//运行结果: LoginException catch

Test2 :

try {    throw new LoginException();} catch (BusinessException be) {    System.out.println("BusinessException catch");} catch (Exception e) {    System.out.println("Exception catch");}//运行结果: BusinessException catch 

注意, 在catch控制器编写顺序中, 不要将父类异常位于子类异常之前,编译器会报错。因为永远无法执行到这个子类catch控制器。

0 0