반응형

지난번에 이어서 사용자 예외처리(UserException) 객체를 생성하고 사용해 보겠습니다.

과정은 어렵지 않다고 할 수 있습니다. UserException 객체를 생성하고 예외 처리할 구문에서

사용하면 됩니다.

 

우선 UserException 을 생성하겠습니다.

다음과 같이 생성이 가능합니다.

@SuppressWarnings("serial")

public class UserException extends Exception{
 
      private String errorPosition;

      public UserException(String errorPosition) {
            this.errorPosition = errorPosition;
      }

      @Override
      public String getMessage() {
            return errorPosition;
      }
}

위 코드처럼 Exception을 상속받아 작성해야 합니다. 

객체를 사용할 때는 예외 처리 구문에 throw new UserExcpetion으로 작성하시면 됩니다.

간단한 사용 예는 다음과 같습니다.

      public static void main(String[] args) throws UserException {
            if(11!=22) {
                  throw new UserException("## 1 not  equre 2");
            }
      }

이렇게 작성하고 실행하면 다음과 같이 에러가 발생합니다.

 

 

이와 같이 사용자가 설정한 메시지가 표시가 되는 것을 확인할 수 있습니다.

그리고 다른 경우지만  springsecurity에서 사용자 access deny를 처리하는 경우도 

사용을 해 봤습니다.

 

우선 BadCredentialsException을 상속받아 다음의 함수를 정의했습니다.

public class DenyUserException extends BadCredentialsException {
      public DenyException(String message, UserDetails user) {
            super(message, user);
      }
}

위의 코드는 SpringSecuryt의 BadCredentialsExceptionBadCredentialsException을 상속받아 생성한 코드입니다.

위 코드는 보통 사용자 인증 시 에러 메시지를 추가하는 것입니다.

throw new DenyUserException("Deny user exception", user);

이렇게 사용하시면 입력한 메시지가 로그에 출력됩니다.

 

예외처리를 잘 사용하는 것은 중요합니다.

 

그래서 기본적으로 try/catch 구문을 사용하는 습관이 중요하고

어느 위치에 사용해야 합니다. 그리고 catch Exception 처리를 사용하는 경우

보통은 메시지만 남기는데 catch 문에서도 적절한 코드로 

예외처리하는 것이 중요합니다.

public String getAbc(String aaa) {
String abc = aaa;
try {
if(abc.length > 11) {
abc = "defg";
}
} catch(NullPointException ne) {
System.out.println(ne.toString());
abc = "123";
getAbc(abc);
} catch(Exception e) {
System.out.pritln(e.toString());
} 
return abc;
}

위의 구문처럼 특정 예외인 경우는 예외 사항이 해결하는 것이 좋은 것 같습니다.

 

예외처리는 항상 번거롭습니다.

그리고 습관 되지 않으면 항상 빼먹고 개발하게 됩니다.

그래서 항상 예외 구문을 개발 툴에서 자동 생성되도록 설정하는 것도 좋습니다.

 

예외처리에 대한 내용을 정리하면 저도 다시 생각하게 되었습니다.

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기