
요즘 Java Spring FrameWork 에서 예외 처리 하는것으로 골머리를 썩고있다.
일반적으로 Java / Spring 환경에서의 예외처리 방법은 다음과 같다.
try {
// 예외가 발생할 수 있는 코드
} catch (Exception e) {
// 예외 처리 코드
}
@Controller
public class MyController {
//...
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleError(Exception e) {
// 예외 처리 코드
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleError(Exception e) {
// 예외 처리 코드
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
@ControllerAdvice
public class CustomResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
// 예외 처리 코드
return new ResponseEntity<>(new ErrorDetails("Validation Failed", ex.getBindingResult().toString()), HttpStatus.BAD_REQUEST);
}
}
현재 프로젝트에서 try catch 를 사용하여 예외를 처리하고 있었으나 부적절한 예외처리 및 발생 가능성 있는 예외에 대해 선행처리를 수행한 후 포괄적인 예외 처리를 수행해야 한다고 지적이 나와 보완중이다. 해당 내용 개선 사항을 마무리 까지 하여 블로그에 추가적으로 포스팅 해야겠다.