@ControllerAdvice 및 @ExceptionHandler에 대한 일반적인 질문이 있습니다. 2 개의 API가있는 @RestController 주석이 달린 나머지 컨트롤러가 있습니다. 인수 유효성 검사가 실패하면
MethodArgumentNotValidException
. 이를 처리하기 위해 ExceptionHandler를 만들었습니다.
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = {MethodArgumentNotValidException.class})
public ResponseEntity<String> handleException(MethodArgumentNotValidException e) throws Exception {
return new ResponseEntity<>(e.getBindingResult().getGlobalError().getDefaultMessage(), HttpStatus.BAD_REQUEST);
}
}
이 예외가 발생할 때 무언가를 기록하고 싶다면 전에 코드 줄을 추가 할 수 있습니까?
return
다음과 같은 진술 :
LOG.info("something happened");
기록한 다음 BAD_REQUEST를 호출자에게 반환합니까?
- 답변 # 1
관련 자료
- java - catch 블록이 여러 개인 경우 왜 RuntimeException이 catch 블록에서 catch되지 않습니까?
- 자바에서 사용자 정의 try catch 블록을 적용하는 방법
- Cypress에서 catch 블록을 사용하여 오류 처리
- asp.net - 캐치 블록 내에서 오류를 처리하는 방법
- javascript - 캐치 블록에서 조건부로 응답 보내기
- c# - try catch 블록의 net core 웹 앱에서 사용자에게 오류 표시
- c++ - 예외를 위해 클래스의 객체에서 포착하는 더 많은 인수로 catch 블록을 만드는 방법은 무엇입니까?
- javascript - catch 블록이 가져 오기 API에서 오류를 얻지 못합니다
- java - 한 캐치에서 다른 캐치 블록으로 이동
- node.js - Sequelize- Try 블록이 modelcreate () 오류를 포착하지 않습니다
- c# - try catch 블록에서 예외 재시도
- android - RxJava Observable 응답의 단위 테스트 커버 캐치 블록
- swift - catch에서 do 블록의 변수를 참조하십시오
- c++ - try catch 블록에서 무한 재귀 경고하는 IDE
- groovy - Jenkins 선언 구문에서 try catch 블록을 추가하는 방법은 무엇입니까?
- javascript - try/catch 블록 대신 catch 사용
- Different classes for different JSON messages in one try - 한 번의 시도로 다른 json 메시지에 대한 다른 클래스 - c #에서 catch 블록
- java - 캐치 블록에 라벨을 붙이고 제거하려면 어떻게해야합니까?
- java - try/catch 블록에서"UnreachableBrowserException"을 catch 할 수 없습니다
예. 그것이 사용의 목적입니다
@ExceptionHandler
에스. 프로젝트에 정의 된 여러 나머지 끝점에서 예외를 처리하는 코드를 줄이는 데 도움이됩니다. 이것은 또한 예외를 기록하는 단일 지점 역할을하므로이 안티 패턴을 방지합니다.그래도 예외를 래핑하고 다시 던지는 것과 같은 몇 가지 이점을 얻을 수 있습니다.
당신은 생각할 수 있습니다
@ExceptionHandler
거인으로서catch
모든 나머지 엔드 포인트 및 특정 유형의 예외에 대해 차단합니다.게다가, 당신의
GlobalExceptionHandler
클래스는 백엔드에서 발생하는 모든 예외를 처리하기위한 로직이 연결된 구성 요소가되고이를 클라이언트 측에보고하는 방법을 처리합니다.