Try-catch 문이나, throws Exception으로 예외처리를 하는 경우가 많은데,
이때 개발자 자신이 어떤 의도를 가지고 쓴다기보다는 습관적으로, 혹은 혹시나오류가 발생하지 않을까 하는 생각으로 사용하는 경우가 있다.
정말 요새 많이 돌아보게 되는 것은 프로젝트를 하면서 '본인의 의도' 없이 코드를 치거나 다른 사람의 코드를 그대로 가져와서 그대로 또는 찢어서 사용하게 되는 경우가 많았다는 것이다.
모르는 건 죄가 아니지만 알고도 하는 건 문제가 될 것...!!!!
아직도 모르는 것 투성이지만 최대한 앎에 가까워지도록 공부를 해야겠다는 다짐을 해본다!!!
Checked Exception | Unchecked Exception | |
---|---|---|
처리 여부 | 반드시 처리해야 함. | 명시적으로 처리를 강제하지 않음. |
확인 시점 | 컴파일 단계 | 실행 단계 |
예외 발생 시 트랜잭션 처리 | roll-back 하지 않음. | roll-back함. |
대표 예외 | IOException, SQLException | RuntimeException 하위 예외. |
try {
// 예외가 발생할 수 있는 코드
} catch (Exception e) {
// 예외 처리
}
throws
를 선언하여 예외가 발생하면 알아서 던지게 하는 방법.// 방법 1
public void add() throws SQLException {
// JDBC API
}
catch
로 일단 예외를 잡은 다음 다시 예외를 던지는 방법.// 방법 2
public void add() throws SQLException {
try {
// JDBC API
} catch(SQLException e) {
// 로그 출력
throw e;
}
}
try {
// ...
} catch (SQLException e) {
throw new CustomException();
}
이펙티브 자바(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/
멋져부러요