본문 바로가기
Language/Java

자바 예외처리를 생각해보자.

by 태하팍 2016. 9. 26.
반응형


예외의 종류는 2가지로 보면 된다.

checked exception과 unchecked exception

말그대로 체크가 되는 예외와 예기치 못하게 발생하는 예외를 뜻한다. 

또한 unchecked exception은 runtime exception 이라고 많이 불리운다.

여기서 생각해보아야 할 것이 있다. 어떤 처리를 해주어야 예외처리를 잘하는 걸까?

보통은 Exception가 발생하면 잡아서 에러로그를 찍어주거나 상위로 올려주어서 처리를 하기도 한다.

try {

   ... 블라블라 ...

} catch(Excetpion e) {

   logger.error(e.getMessage);

}

토비책에서도 제대로된 예외처리를 하라고 살짝 나오기도 한다. 

과연..어떤 예외처리가 제대로된 예외처리일까? 사람마다 다를수 있을것 같기도 하다.(책임과 구조가 중요하기 때문..)

다음 RND 스터디(지인들과 만든 스터디 그룹)에서 토론해보면 좋을것 같다. 

개인적으로는 

1) 런타임 예외에 대한 것을 아래처럼 공통화(소스)를 한다!

예)

public class CommonLineupException extends RuntimeException{

    public static final Logger logger = LoggerFactory.getLogger(CommonLineupException.class);

    public CommonLineupException(String message){

        super(message);

        logger.error(message);

    }

}

2) 런타임 예외는 발생 시킨다! 고려사항으로 런타임 예외가 났을 경우 어떻게 처리를 해주는가를 더 생각해봐야한다.

  - MVC 구조라면 컨트롤러까지 올려서 관련 내용 처리 하기
  - api라고 한다면 유용정보(에러로그) 남기기


3) 또한 service -> service 구조이거나 service안에 여러 메소드들로 만들어져있다면

런타임 예외가 발생하는 메소드들이 그책임을 다해야 한다. 그안에서 에러로그와 런타임 예외를 발생 시켜 위로 올려주거나 하면 된다.


팁 : 스프링프레임워크에서는 예외를 잘할 수 있도록 도움을 주는 어노테이션이 존재한다.

참고 : https://www.mkyong.com/spring-mvc/spring-mvc-exceptionhandler-example/ 

또한 db단하고 붙어있다면 롤백 유무와도 상관이 있다. 롤백이 되려면 런타임 예외에만 가능하기 때문이다.


정리하자면..런타임 예외를 잘이용하고 에러로그를 쉽게 오류를 찾을 수 있도록 정보를 넣을수 있도록 한다.


   - 끝 - 

반응형