昨日UAT环境发现一个问题,今日想来还是有必要记录一下,毕竟有些方法执行出错时选择抛出异常,而有些方法选择把异常信息裹进返回值。如果忽略了返回值的校验,就有可能出现异常信息丢失的情况,让人摸不着头脑。
一、背景
EDI UAT环境调用jgit进行push时,始终不成功,但是日志里又没有任何异常信息。
二、原因
- 新建仓库的分支被设置为保护分支,不允许develop权限的用户push。
- jgit把push异常信息返回,而我们的程序调用时又忽略了对返回值的校验;
三、解决
- 用户权限改为Maintainer
- 程序里增加返回值校验
四、反思
如果程序执行结果非预期且日志没有异常信息,那么可能有以下可能:
1)程序抛出异常,但被捕获后忘记输出任何日志——吃掉了异常
2)程序把异常以返回值形式返回,程序里忘记校验返回值——丢失异常
网友评论