[Java] Exception

cateto·2021년 4월 26일
1
post-thumbnail

Try-catch 문이나, throws Exception으로 예외처리를 하는 경우가 많은데,
이때 개발자 자신이 어떤 의도를 가지고 쓴다기보다는 습관적으로, 혹은 혹시나 오류가 발생하지 않을까 하는 생각으로 사용하는 경우가 있다.
정말 요새 많이 돌아보게 되는 것은 프로젝트를 하면서 '본인의 의도' 없이 코드를 치거나 다른 사람의 코드를 그대로 가져와서 그대로 또는 찢어서 사용하게 되는 경우가 많았다는 것이다.
모르는 건 죄가 아니지만 알고도 하는 건 문제가 될 것...!!!!
아직도 모르는 것 투성이지만 최대한 앎에 가까워지도록 공부를 해야겠다는 다짐을 해본다!!!

Error와 Exception

  • Error : 개발자가 미리 예측할 수 없는 시스템 내의 비정상적인 상황
  • Exception : 개발자가 의도하여 발생할 상황을 미리 예측하여 처리하는 예외

Checked ExceptionUnchecked Exception
처리 여부반드시 처리해야 함.명시적으로 처리를 강제하지 않음.
확인 시점컴파일 단계실행 단계
예외 발생 시 트랜잭션 처리roll-back 하지 않음.roll-back함.
대표 예외IOException, SQLExceptionRuntimeException 하위 예외.

예외 처리 방법(From: 토비의 스프링)

  1. 예외 복구 : 예외 상황을 파악하고 문제를 해결해서 정상 상태로 돌려놓는 방법이다.
  • try-catch
try {
		// 예외가 발생할 수 있는 코드
} catch (Exception e) {
		// 예외 처리
}
  1. 예외 회피 : 예외처리를 자신이 처리하지 않고 호출한 쪽에 던지는 것으로, 두 가지 방법이 있다.
  • throws를 선언하여 예외가 발생하면 알아서 던지게 하는 방법.
// 방법 1
public void add() throws SQLException {
    // JDBC API
}
  • catch로 일단 예외를 잡은 다음 다시 예외를 던지는 방법.
// 방법 2
public void add() throws SQLException {
  try {
    // JDBC API
  } catch(SQLException e) {
    // 로그 출력
    throw e;
  }
}
  1. 예외 전환 : 예외 전환은 말 그대로 다른 예외로 전환하는 것을 말한다. 주로 커스텀한 예외로 전환한다.
try {
		// ...
} catch (SQLException e) {
		throw new CustomException();
}

From Effective Java

이펙티브 자바(3판) "10장. 예외"도 함께 읽어보자.

이펙티브 자바는 챕터 제목만 읽어도 도움이 된다.

아이템 69. 예외는 진짜 예외 상황에만 사용하라
아이템 70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라
아이템 71. 필요 없는 검사 예외 사용은 피하라
아이템 72. 표준 예외를 사용하라
아이템 73. 추상화 수준에 맞는 예외를 던져라
아이템 74. 메서드가 던지는 모든 예외를 문서화하라
아이템 75. 예외의 상세 메시지에 실패 관련 정보를 담으라
아이템 75. 가능한 한 실패 원자적으로 만들라
아이템 76. 예외를 무시하지 말라

출처 : 사수님 😎, https://johngrib.github.io/wiki/java-exception-handling/
참고 : https://www.nextree.co.kr/p3239/

profile
Curious for Everything

1개의 댓글

멋져부러요

답글 달기