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"로 전달..
굿~~~