Throwable异常错误的父类。
直接的子类:
error,Exception
error系统级错误
Exception异常的父类,RuntimeException及其子类是运行时异常。不用捕获。其他的都是编译异常,必须处理被捕获处理。
异常的作用就是不让正常流程中断,给出正常异常的备用方案。让异常错误情况恢复正常流程。
编译异常:提示调用者,可以进行备用方案处理。
运行异常:就是让程序挂掉,因为程序有问题。
异常准则:
1.碰到异常,确认自己否是可以处理,能处理就处理,消耗掉这个异常,不可以抛出去。
2.无论捕获异常,还是抛出异常,一定要把异常范围限制在最小。不同的异常可能有不同的处理情况。
3.最好值捕获抛出异常的请求方法,如果一段逻辑代码中很多请求方法中都有异常,可以全部try一起,捕获处理。但是范围尽量小。
4.不要用异常控制正常的语句流程,异常就是用来处理不正常的情况的,trycatch的效率比较慢。所以能不用就不用。
5.转义异常,比如说底层异常很多个,需要调用方处理,但是对于调用方可能就只关系这个接口的异常情况,所以可以把相关的异常用统一的异常封装抛出去。让调用方统一处理。
6.编译异常的时候,改为运行时异常,场景:如果碰到编译异常,但需要停止程序的。
7.显示捕获运行时异常。正常来说,运行时不用捕获,他的目的就是让程序挂掉。但是如果需要对异常统计,调试,或者相应的信息友好的返回给调用方。
8.封装异常的时候不要抛弃本来的异常信息。5 throw new MyBusinessException("A message that describes the error.", e);