JAVA에서 발생 될 수 있는 다양한 예외처리..
값이 null 객체에 접근시 발생하는 NullPointException..
숫자가 아닌 문자를 숫자로 변환 시 발생하는 NumberFormatException 등..
JAVA에는 다양한 Exception(예외)이 정의되어있다.
또한 미리 정의된 메시지 역시 있지만..
사용자가 필요에 의해 예외를 정의 할 수 있다.
오류가 발생 한 경우 특정 메시지, 코드 등을 정의 하여 반환 하는 경우라 생각한다.
– 사용자 정의 클래스 생성
public class CustomException extends Exception { private static final long serialVersionUID = 1L; Exception exception; private String message; public CustomException(String message) { this.message = message; } public String getMessage() { if(message != null) { return message; }else { return exception.getMessage(); } } }
Exception.class 를 상속 받아 작성(message 뿐 아니라 코드, 객체 다양하게 추가하여 사용 가능..
– 사용하기..
try { TestVO testVO= testService.getTestInfo(key); ArrayList<TestVO> testList = testService.getTestList(testVO.getKey()); request.setAttribute("testVO", testVO); request.setAttribute("testList", testList); }catch (CustomException custom) { request.setAttribute("message", custom.getMessage()); return ERROR_PAGE; }catch (Exception e) { request.setAttribute("message", e.getMessage()); return ERROR_PAGE; }
위와 같이 작성하고 testVO가 null 이면 CustomException 에서
JAVA 기본 예외가 작동할 줄 알았다..
(Exception.class 상속 받았으니까…)
그러나 아무러 작동도 하지 않을 뿐더라..
생성자에 정의한 message 역시 설정 할 수 없다..
또한 아래와 같은 에러 메시지가 발생한다.
try 구문안에 CustomException 을 사용하는 경우가 없기 때문…
getTestInfo 메소드를 정의한 인터페이스에 throws CustomException을 추가
TestVO getTestInfo(String key) throws ErsException;
실제 서비스에서는 CustomException 을 발생시키고
생성자를 이용하여 오류 메시지를 작성한다.
@Override public TestVO getTestInfo(String key) throws CustomException { TestVO testVO = testMapper.getTestInfo(key); if(testVO == null) { throw new CustomException("정보를 조회 할 수 없습니다."); } return testVO; }
try 구문 안에 해당 예외처리를 발생(throw new CustomException) 시켜줘야 한다.
Service 단에서 객체 null 여부를 체크하여 처리하는 방식..
또한
catch (CustomException custom) { request.setAttribute("message", custom.getMessage()); return ERROR_PAGE; }catch (Exception e) { request.setAttribute("message", e.getMessage()); return ERROR_PAGE; }
CustomException 에서 catch 할 수 없는 예외를 위해 JAVA 에서 제공하는
Exception 을 추가로 처리하여 발생 할 수 있는 예외를 처리하여 준다.
0 글이 마음에 드셨다면 하트 꾸욱~