MySQL - 主备一致
特别说明
当前文章内容迁移中,如有问题,请提交 issues 谢谢 ~~
全局异常处理的设计
业务逻辑正常异常
未知逻辑导致异常
如果是业务逻辑正常情况下,已知可能会产生的异常,有两种处理,要么直接 catch 处理(非全局,而是当前函数内部处理),要么往上抛,由框架层面 全局 catch,这时候,全局异常处理,如果已知
可能产生的异常是什么异常类型,可以自定义如何处理,如果不知道,则统一交由 Exception 顶级父类处理,设定这一类的统一异常信息返回结果未知逻辑导致异常,同样分两种情况,
- 为了保证业务可以正常进行,对于这种情况,一般由当前业务内部处理,不往上抛,即不会经由全局异常处理。
- 在业务允许或者是设计正常的情况下,需要抛出,这个时候就需要由 全局异常处理。一般这种未知的 异常,全局异常很难定位具体类型,一般交由顶级父类 Exception 处理
如果知道可能潜在的异常,可以自行定义如何处理。
总结
一般情况下,为了保证用户的体验,异常的处理一般很少交由全局异常处理,这个时候的异常,一般由函数内部处理,返回空数据等返回值。
业务设计正常情况下,需要设计的异常是需要让用户感知的异常,这个时候设计的一般设计特定的类型返回值。对于全局异常返回的设计,大部分情况下的设计都是针对未知,无法感知的异常,且会导致系统问题,为了保证系统正常运行而进行 catch 比如 内存问题,空指针问题等