天天看点

createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

我们在项目开发中,难免碰到业务代码异常,无论是

server 500,

还是其他异常。 我们这里简单说一下,如何抛弃

try-catch

,统一进行异常响应处理。

createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

正常情况下,我们需要这么写:

JobController

// 查询所有
           
结果如图:
createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

这样比较麻烦,要写很多try-catch.

那么有没有一种办法,帮我们自动拦截错误呢?

2、自定义异常处理

HandlerExceptionResolver, 就是处理异常的类;

源码:

public 
           

以上有四个参数其实相当于:

request(请求)、response(响应)、hendler(处理器)、exception(异常)

;

接下来我们重写

WebMvcConfigurer.configureHandlerExceptionResolvers来处理异常:

❝com.scaffold.test.config.WebMvcConfig❞
package 
           
业务失败的异常

: ServiceException 服务异常类

package 
           

报错400代码;

❝2、

调用失败: Servlet异常

if 
           

​ 结果如图:

createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

❝3、

内部代码异常:比如 mysql 查询表名错误

String 
           

结果如图:

createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

4、请求接口404:这个在统一异常中无法获取,需要额外处理

404进入不了统一异常处理,如下图:

createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

所以,全局异常处理捕获不到404错误,需要专门写一个类用来处理404异常

❝com.scaffold.test.base.NotFoundException❞
package 
           
createprocess失败代码2_真烦!经常碰到业务代码异常,为了进行统一响应我差点一夜秃头...

3、完整代码

com.scaffold.test.base.Result: 统一返回实体类❞

package 
           

com.scaffold.test.base.ResultCode: 统一返回响应码枚举,参考HTTP状态码❞

package 
           

统一异常拦截:

com.scaffold.test.config.WebMvcConfig

package 
           

❝404拦截处理:

com.scaffold.test.base.NotFoundException❞

package 
           

继续阅读