Language/Java

new Exception 생성 및 throw

아르비스 2020. 6. 22. 12:40

Java에서 Exception을 변경하거나 새로 만들어야 하는 경우,

특히 Http Response 에서 Stack Trace값을 없애야 하는경우 사용..가능함.

 

1) Exception Class 생성

public class SecurityException extends RuntimeException {

    private static final long serialVersionUID = -7806029002430564887L;

    private String message;

    public SecurityException() {
    }

    public SecurityException(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

}

 

2) Response 객체 생성

public class SecurityResponse {

    private String error;

    public SecurityResponse() {

    }

    public SecurityResponse(String error) {
        this.error = error;
    }

    public String getError() {
        return error;
    }

    public void setError(String error) {
        this.error = error;
    }

}

3) Exception Handler 추가

@ControllerAdvice
public class SecurityControllerAdvice {

    @ExceptionHandler(SecurityException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public SecurityResponse handleSecurityException(SecurityException se) {
        SecurityResponse response = new SecurityResponse(se.getMessage());
        return response;
    }
}

 

4) Code에서 Exception 발생

throw new SecurityException("Your data is invalid");

 

 

결과 확인하면, http response status 500(Internal Server Error) 이고,

Message는 "Your data is invalid"로 전달..

 

굿~~~