프로그램 실행 시, 발생할 수 있는 예상 못한 예외의 발생을 대비한 코드를 작성하는 것
주의! 예외처리 개수
반드시 '부모 클래스의 정의된 메서드 개수 > 자식 클래스의 정의된 메서드 개수'
예외 처리를 제대로 하지 못하면, 서버의 문제인지 클라이언트의 문제인지 판단이 어려움
에러 발생 시 전달되는 본문을 바탕으로, 프론트 개발자들과 소통/공유가 필요
try {
...
} catch(SQLException e) {
}
프로그램 실행 中 오류로 인해 예외가 발생했으나, 무시하고 계속 진행해버린다.
그 결과로
1. 비정상적인 동작
2. 메모리나 리소스가 소진
3. 예상치 못한 문제
4. 시스템 오류 or 이상한 결과의 원인 찾기가 어려움
try {
...
} catch(SQLException e) {
System.out.println(e);
}
기본적으로 정의된 클래스 외에도, 필요에 따라 새로운 예외 클래스를 정의해서 사용할 수도 있다.
class MyException extends Exception {
// 필드
private final int ERR_CODE; // 생성자를 통해, 초기화함
// 생성자
MyException(String msg, int errCode) {
super(msg);
ERR_CODE = errCode;
}
...
}
어떤 것이 유리한 예외 처리 방법일까?
배우기 쉽고 사용하기 편리한 API를 만들 수 있다.
표준 예외를 사용한 API는 가독성이 높다.
예외를 재사용할 수 있다.
→ 예외 클래스의 수가 적을수록, 프로그램의 메모리 사용량↓ , 클래스 적재 시간↓
예외 발생 조건이 해당 예외 문서에 기술된 것과 일치하지 않는 경우
→ 사실, 표준 예외가 있기 때문에 자주 발생하는 상황은 아니다.
여러 예외와 맞물려, 어느 하나를 선택하기 모호한 경우 (즉, 비즈니스 로직의 명확성을 높이고 싶은 경우)
클라이언트 코드에 대한 추가적인 정보 혹은 행동을 제공하고 싶은 경우