Languages/Java

[HUFS/객체지향프로그래밍] #9 예외 처리

성중 2023. 1. 4. 16:10

예외와 예외 클래스

사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 발생하는 프로그램 오류를 예외(exception)라고 하며, 예외 처리 프로그램으로 정상 실행 상태를 유지해야 한다

* 개발자의 경험에 의해 예외 처리 코드 작성, 없을 경우 프로그램 강제 종료

  • 일반 예외: 컴파일러가 체크하는 예외로, 컴파일 과정에 해당 예외 처리 코드가 있는지 검사
  • 실행(runtime) 예외: 컴파일러가 체크하지 않는 예외로, 검사 없이 실행 시 예측 없이 갑자기 발생

 

자바에서는 예외를 클래스로 관리
RuntimeException 클래스로 일반 및 실행 예외 클래스 구분

  1. NullPointerException: 가장 빈번하게 발생하는 실행 예외로, 객체 참조가 없는 상태의 참조 변수로 객체 접근 연산자를 사용할 경우 발생
  2. ArrayIndexOutOfBoundsException: 배열에서 인덱스 범위를 초과할 경우 발생
  3. NumberFormatException: 숫자로 변환될 수 없는 문자열을 숫자로 변환할 때 발생
  4. ClassCastException: 상위 & 하위 클래스 / 구현 클래스 & 인터페이스 간 타입 변환은 가능하지만 그 외의 경우 클래스 타입 변환 시 발생

예외 처리 코드

컴파일 에러(일반 예외)의 경우 컴파일러가 에러를 발생시켜 개발자에게 예외 처리 요구

try-catch-finally 블록으로 일반 및 실행 예외 모두 흐름 제어가 가능하다

 

try 블록 내부에서 예외 발생 시 catch 블록 실행, finally 블록은 항상 실행
발생하는 예외 별로 예외 처리 코드를 달리하는 다중 catch 블록
상위 예외 클래스가 하위 예외 클래스보다 아래에 위치해야 함

throws 키워드로 메소드에서 처리하지 않은 예외를 호출한 곳으로 넘길 수 있다

 

떠넘길 예외 클래스는 throws 키워드 뒤에 쉼표로 구분하여 나열