ZBLOG

@Slf4j @ResponseBody @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler public HobbyResponse handleException(Throwable e) { HobbyResponse hobbyResponse; StringBuilder message =...

这段代码是一个全局异常处理类,使用了Spring框架提供的@ControllerAdvice注解。它捕获并处理Controller中抛出的各种异常。

首先,它定义了一个方法handleException来处理异常。该方法接受一个Throwable类型的参数e,表示发生的异常。然后根据不同类型的异常进行不同的处理逻辑。

  • 如果是BindException类型的异常,表示请求参数绑定错误,会遍历获取每个字段错误信息,并将错误信息添加到message字符串中,并返回相应的HobbyResponse对象。
  • 如果是ConstraintViolationException类型的异常,表示请求参数校验失败(普通传参),会遍历获取每个约束违规信息,并将错误信息添加到message字符串中,并返回相应的HobbyResponse对象。
  • 如果是HttpMessageNotReadableException或MethodArgumentTypeMismatchException类型的异常,表示请求参数类型错误,在这里统一返回REQUEST_PARAM_TYPE_ERROR类型的HobbyResponse对象。
  • 如果是MissingServletRequestParameterException类型的异常,表示缺少请求参数,在这里将缺少的参数名和类型添加到message字符串中,并返回相应的HobbyResponse对象。
  • 如果是HttpRequestMethodNotSupportedException或NoHandlerFoundException类型的异常,则分别返回METHOD_NOT_ALLOWED和NOT_FOUND类型对应的HobbyResponse对象。
  • 如果是MaxUploadSizeExceededException类型的异常,表示上传文件大小超出限制,在这里直接返回PAYLOAD_TOO_LARGE对应的HobbyResponse对象。
  • 如果是BusinessException自定义业务异常,则根据具体情况返回自定义业务码和消息的HobbyResponse对象。
  • 最后,对于其他未处理的异常,则返回INTERNAL_SERVER_ERROR类型的HobbyResponse对象,并记录错误日志。

请注意,代码中使用了@Slf4j注解来实现日志功能,同时使用了@ResponseBody注解将方法返回值转换为JSON格式。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=2845

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?