Spring MVC로 예외를 처리하기 위해 노력하고 있습니다. @ControllerAdvice 및 @ExceptionHandler를 사용하고 있습니다. JSON을 반환하기 위해 @ResponseBody 및 ResponseEntity 두 가지 경우를 시도했습니다. 여기 Tomcat에서 @ExceptionHandler 응답이 작동하지 않습니다.
내 컨트롤러입니다 : 내가 디버깅 할 때@ControllerAdvice
public class GlobalExceptionController {
@ExceptionHandler(CustomGenericException.class)
@ResponseBody
public ErrorResource handleCustomException(CustomGenericException ex) {
ErrorResource errorResource=new ErrorResource("Example 1");
errorResource.error=ex.getErrCode();
return errorResource;
}
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResource> handleAllException(Exception ex) {
ErrorResource errorResource=new ErrorResource("Example 2");
errorResource.error=ex.getMessage();
return new ResponseEntity<ErrorResource>(errorResource,HttpStatus.NOT_FOUND);
}
}
class ErrorResource {
public String error;
public ErrorResource(String a){error=a;}
}
내가 받는다는 실행하는 데 바람둥이 7 플러그인을 사용하여 응용 프로그램을 디버깅하고있어, 그래서 @ExceptionHandler이 발사 및 반환을 실행하는 것을 볼 수있다 성명서. 그러나 대신 JSON을받은 것을 내가 갖는 것은 HTTP 500 오류입니다 :
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.mkyong.web.exception.CustomGenericException
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:858)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
나는 모델 뷰가 작동 뷰 또는 반환,하지만 난위한 responseBody 또는 ResponseEntity을 반환하려고 할 때마다, 나는 아직도 해요 경우 동일한 오류가 발생합니다.
마지막으로, 대신에 Tomcat을 사용하는, 내가 응용 프로그램을 실행하는 데 SpringBoot를 사용하는 경우, 내가 오류를받지 못했습니다 내가 응답 해요 내가받을 생각으로 왜 작동하지 않습니다
{"error":"E888"}
수코양이?
감사합니다.
동작은 완전히 서블릿 내에 있기 때문에 Tomcat에 전혀 문제가되지 않습니다. – Raedwald