开发中遇到异常很多同学一般是进行抛出处理.那么我们程序开发中的异常是否都需要抛出呢?大家请思考一下这个问题.
一般我们会有个困惑,一般异常不都是抛出处理,再最外层捕获或者由AOP框架捕获统一转换为自定义异常后返回前端.这样处理是一个一般的方法.但在互联网场景越来越复杂的情况下,这样处理方法就不是特别的适用了.
在整个流程中,一些对这个流程并不起关键做用的业务发生异常,并不一定需要抛出,只需要记录次异常.让流程继续走下去,而不是走向失败! 例如在用户登录过程中,需要向风控系统推送用户登录的记录.假如用户信息验证和其他一些关键验证并没有出问题,由于风控系统在进行发布,服务暂时不可用,导致了服务的依赖异常.那么这里要不要判定用户登录失败呢?显然可以更加灵活的处理此异常!这里只需要记录异常,或者在异常处理中将用户登录的动作放入消息队列中,异步话处理这个动作.后续再排查原因.
对于业务主流程的异常,当前流程不能继续流转,这类异常必须抛出!