33import lombok .extern .slf4j .Slf4j ;
44import org .springframework .boot .web .error .ErrorAttributeOptions ;
55import org .springframework .boot .web .servlet .error .DefaultErrorAttributes ;
6+ import org .springframework .http .converter .HttpMessageNotReadableException ;
7+ import org .springframework .web .bind .MissingServletRequestParameterException ;
68import org .springframework .web .bind .annotation .ControllerAdvice ;
79import org .springframework .web .bind .annotation .ExceptionHandler ;
810import org .springframework .web .bind .annotation .ResponseBody ;
911import org .springframework .web .context .request .WebRequest ;
1012import top .cadecode .simple .common .response .SimpleRes ;
13+ import top .cadecode .simple .common .response .SimpleRes .ResError ;
1114import top .cadecode .simple .constant .ErrorEnum ;
1215import top .cadecode .simple .constant .StatusEnum ;
1316import top .cadecode .simple .util .MapUtil ;
@@ -46,13 +49,24 @@ public SimpleRes handleSimpleException(SimpleException e, HttpServletRequest req
4649 public SimpleRes handleOtherException (Exception e , HttpServletRequest request ,
4750 HttpServletResponse response ) {
4851 log .error ("Exception Handler =>" , e );
52+ // 处理 SpringMVC 异常
53+ if (e instanceof MissingServletRequestParameterException ) {
54+ return SimpleRes .fail (ErrorEnum .REQ_PARAM_INVALID )
55+ .path (request )
56+ .status (response );
57+ }
58+ if (e instanceof HttpMessageNotReadableException ) {
59+ return SimpleRes .fail (ErrorEnum .REQ_BODY_INVALID )
60+ .path (request )
61+ .status (response );
62+ }
4963 return SimpleRes .fail (ErrorEnum .UNKNOWN )
5064 .path (request )
5165 .status (response );
5266 }
5367
5468 /**
55- * 自定义 SpringMVC 404 返回内容
69+ * 自定义 SpringMVC 404、405 返回内容
5670 */
5771 private static final String STATUS_KEY = "status" ;
5872 private static final String MESSAGE_KEY = "message" ;
@@ -66,13 +80,22 @@ public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttrib
6680 // 获取状态码与路径
6781 int status = (int ) errorAttributes .get (STATUS_KEY );
6882 String path = (String ) errorAttributes .get (PATH_KEY );
69- String error = (String ) errorAttributes .get (ERROR_KEY );
70- // 处理 404 异常
83+ // 处理 404
7184 if (status == StatusEnum .NOT_EXIT .getStatus ()) {
7285 return MapUtil .create ()
7386 .add (STATUS_KEY , StatusEnum .NOT_EXIT .getStatus ())
7487 .add (MESSAGE_KEY , StatusEnum .NOT_EXIT .getMessage ())
7588 .add (PATH_KEY , path )
89+ .add (ERROR_KEY , new ResError (ErrorEnum .API_NOT_EXIST ))
90+ .asMap ();
91+ }
92+ // 处理 405
93+ if (status == StatusEnum .NOT_FIT .getStatus ()) {
94+ return MapUtil .create ()
95+ .add (STATUS_KEY , StatusEnum .NOT_FIT .getStatus ())
96+ .add (MESSAGE_KEY , StatusEnum .NOT_FIT .getMessage ())
97+ .add (PATH_KEY , path )
98+ .add (ERROR_KEY , new ResError (ErrorEnum .REQ_METHOD_INVALID ))
7699 .asMap ();
77100 }
78101 return errorAttributes ;
0 commit comments