欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java异常匹配原则  

程序员文章站 2022-07-14 11:17:40
...
源:http://blog.csdn.net/butcher__/article/details/54837131
评:
java异常匹配有两个重要原则:

异常控制系统会按当前catch控制器的编写顺序来搜索,一旦找到相符的catch控制器,就认为异常已被捕获,不再进行更多的搜索。
catch控制器可以捕获当前异常类以及从它衍生的子类。
根据这两个原则,来做个测试,首先定义BusinessException和LoginException, BusinessException继承Exception, LoginException继承BusinessException。

class BusinessException extends Exception {
    //empty
}
class LoginException extends BusinessException {
    //empty
}
1
2
3
4
5
6
那么,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
1
2
3
4
5
6
7
8
9
10
Test2 :

try {
    throw new LoginException();
} catch (BusinessException be) {
    System.out.println("BusinessException catch");
} catch (Exception e) {
    System.out.println("Exception catch");
}
//运行结果: BusinessException catch
1
2
3
4
5
6
7
8

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