异常是分层次级别的,方法1,2,3代表异常层级。假如是方法3调用方法2,方法2调用方法1。
当方法1出现异常时,首先方法1会捕获异常try catch,接着方法1的代码会决定怎么处理异常(记录日志,或者修复异常假装没发生,或者返回客户端错误)
假如不想处理异常,可以抛出去给方法2,方法2继续往上抛,也可以处理不处理,也可以往上抛。
如果能够在服务器内部正确处理异常,并且把异常纠正过来之后返回客户端正确相应结果当然是好的,但是绝大多数情况下,流程就是不正确的了,没有办法返回正常的相应结果。这时候就需要返回一个异常信息告诉服务端,我哪里出错了。
1:假如我在方法1捕获异常,我处理了,但是按照理论,我要逐一往上抛错。每一个方法要去捕获处理下面的方法抛的异常。这样代码是很繁琐的,而且我们经常遗漏捕获的异常。
2:有些异常我们是不能提前预知,或者由于经验缺失我们没有预料到这种类型异常错误。我们不会trycatch捕获,但是又是侯不trycatch 会造成程序崩溃,这样不好的。不捕获就会一直存在。没有捕获就不去处理,不去处理就一直存在。
对于这2个情况我们需要全局异常处理。对于我们API2件事情必须要做1.记录日志2.要有统一错误返回格式(错误码和错误信息