其实从一开始工作就开始思考这个问题了,一直没有特别好的理清楚如何处理异常才是最合理的,最近有一点开窍,把自己的想法记录下来,看看以后还会不会有进化。
1. 工具类中的异常
除了使用一些常见的工具类,我们也会自己定义一些工具类来处理一些项目中的公共逻辑。工具类一般不涉及具体的业务逻辑,因此最好是以 checked exception
的形式抛出,特别是该异常是由于调用该方法的输入造成的,那必须将该异常抛给调用者,由调用者处理。
而不是自己默默的吞掉这个异常,或者把这个异常转换为 runtime exception
,这样不利于业务代码妥善处理并合理提示用户。
2.业务逻辑中的异常
业务逻辑代码中的异常,我目前喜欢将其以自定义的runtime exception
抛出,直达 controller 外层的统一异常处理逻辑,避免还要通过方法返回 boolean 字段来判断是否出错。
通过统一的异常处理切面层,可以方便的拦截下所有错误信息,不将服务器内部错误抛给用户,也减少了被攻击者识别的风险。