예외

예외 정리

종류

구분

롤백여부

처리 여부

Checked Exception

  • Exception

  • IOException

  • SQLException

    .....

O

try~catch반드시 처리

Unchecked Exception

  • NPE

  • NumberFormatException

  • Illegal~Exception

    .....

X

X

추세 및 권고 사항

  • Unchecked Exception을 사용

  • 검사 예외에서 따로 처리하는게 없음. 대부분 로깅하고 끝.

    • 검사예외에서는 유의미한 어떤 작업이 필요하나 보통 하지 않음

    • 소스코드를 복잡하게 만드는 원흉이됨

    • 예전에는 검사예외가 권고사항이었으나, 타 언어에서도 그렇고 검사예외는 이제 정말 필요할 때 아니면 사용을 금함

    • 비검사 예외를 적극 사용하고, 유의미한 예외처리 필요

레이어에 맞는 예외처리

  • 웹기반에서 흔히 Controller 레이어, Servcie 레이어, DAO 레이어 각 레이어 성격에 맞는 예외처리.

    • Service 레이어에서 SQLException 처리를 한다던지 등은 성격에 맞지 않음

로그 프레임워크

  • Logback, log4j 등 로그 프레임워크 사용하여 로그 관리

처리 방식

  • 상위가 아래

try{
  // ....
} catch(IOException e){
  // work
} catch (Exception e){
  // work
}
  • try~catch 에서 반드시 어떤 작업이라도 할것

    • 로그를 남겨야한다면, 로그 프레임워크를 통해 로그를 남길것

try{
} catch(Exception e){
  log.error("error~~", e);
}
  • 예외전환

    • 좀더 명확한 예외로 던지기

try{
} catch(Exception e){
  throw new BizException(e);
}
  • 상위 예외 처리 회피는 세부 Exception을 가리게 됨 → 사용하지 말 것

public void test throws Exception {
	// ...
}

Last updated