在前面我们介绍了全局已经处理,里面我们提到全局异常处理主要针对的场景是运行时异常,但是在开发时候,我们还要进行一些外部的编译时异常处理。
对于编译时的异常处理我们目前拟订的规范有:
1)针对事务包裹的异常
假设我们在某个方法上声明了事务,此时就是用的是自动事务,那么这个方法下面的所有方法如果在开发的时候出现了异常,就全部要向上抛异常,尽量在出现异常的时候让事务回滚。
备注:
1、这里也有一些意外的情况,例如整个事务里面的某段代码如果出现异常不影响整个数据链,那么此时就需要走第二种的捕获异常。
2)捕获异常
这里的捕获异常主要是使用 try-catch 形式,但是对于我们来说,我们强制使用 try-catch-finally。也就是说即使不需要做任何事情,我们也需要写一段空的 finally 代码。示例如下:
try{ ..... }catch(XXXException e){ }finally{ }
这样做的好处是大家写习惯之后,每次看到 finally 就会进行思考是否有一些未做完的事情,避免丢三落四,在线上造成严重的问题。
最后:
1、这里捕获的时候,我们尽量使用捕获的时候子类异常,如果出现多个子类异常,那么久 catch 多个。 2、我们是不允许直接捕获 Exception 大异常的。绝对禁止这么干。 3、建议大家养成写空 finally 的习惯,主要是在写代码的时候,促进大家思考,避免丢三落四
还没有评论,来说两句吧...