예외 처리(Exception Handling)
- ‘프로그램을 위한 보험 처리', 잘못된 하나로 인해 전체 시스템이 무너지는 결과를 방지하기 위한 기술적인 처리
예외가 주로 발생하는 원인
-
사용자가 잘못된 데이터를 입력하는 경우
ex)숫자를 넣어야 하는 곳에 문자, 0보다 큰 수를 넣어야하는데 음수 등
-
개발자가 로직이나 계산을 잘못 작성한 경우
ex)연산 작업에서 코드를 잘못 작성했으나 컴파일에서는 문제가 없어 발견하지 못할 때
-
하드웨어나 네트워크가 제대로 동작하지 못하는 경우
-
악의적으로 잘못된 연산을 요구하거나 시스템을 공격하는 경우
에러(Error)와 예외(Exception)를 구분하는 기준
Exception의 두 가지 종류
- Checked Exception: 예외 처리를 하지 않으면 컴파일을 허락하지 않는 예외, 주로 외부 리소스와 통신하는 경우는 반드시 Checked Exception이라고 생각하자
- Unchecked Exception: 컴파일 시에 체크되지 않고, 실행 시(Runtime)에 발생하는 Exception을 말함. 개발자들이 작성하는 로직에 의해서 처리해야 하는 예외
가장 빈번하게 겪는 예외(Exception)
- 실제 레퍼런스(리모컨)가 가리키는 객체가 없는 상태에서 강제로 동작을 시키는 NullPointerException
- 배열과 유사한 자료구조에서 범위를 벗어난 인덱스 번호를 사용하는 XXXOutOfBoundsException
- 문자열이나 숫자/날짜 변환 시에 잘못된 데이터로 발생하는 XXXFormatException
try ~ catch ~ finally
-주로 연결을 종료하는 직업은 finally로 한다
예외에 대처하는 방식
- 직접 try ~ catch를 이용해서 예외에 대한 책임을 스스로 감당하는 방식
- throws Exception을 이용해서 발생한 예외의 책임을 호출하는 쪽으로 전가하는 방식
예외 처리의 노하우
- 호출하는 쪽에 예외를 보고해야 한다면 throws 방식으로 처리합니다.
- 최종적인 책임을 져야 하는 경우라면 try ~ catch를 고려합니다.