




Animal animal = new Dog();
Cat cat = (Cat) animal; //대입된 객체가 아닌 다른 클래스 타입으로 변환
// → ClassCastException
- 예외: 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류. 예외 발생 시 프로그램이 곧바로 종료되나 예외 처리 통해 정상 실행상태를 유지할 수 있음
- 예외 클래스: 자바에서는 예외를 클래스로 관리함. 프로그램 실행 중 예외가 발생하면 해당 예외 클래스로 객체를 생성하고 예외 처리 코드에서 예외 객체를 이용할 수 있도록 해줌
- 일반 예외: 컴파일러 체크 예외 프로그램 실행 시 예외 발생 가능성 높기 때문에 자바 소스 컴파일 과정에서 해당 예외 처리 코드 있는지 검사함
- 실행 예외: 컴파일러 넌 체크 예외. 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일 과정에서 예외 처리 코드 존재 여부를 검사하지 않음
예외 처리
예외 처리 코드
- 자바 컴파일러는 일반 예외를 발생시키는 코드를 발견할 경우 예외 처리 코드를 강제로 요구
- 실행 예외는 컴파일러가 체크하지 않으므로 개발자가 경험으로 예외 처리 코드 작성
try-catch-finally 블록
- 생성자 및 메소드 내부에서 작성되어 일반예외와 실행예외가 발생할 경우 예외 처리 가능하게 함
다중 catch
- 발생하는 예외별로 예외 처리 코드를 다르게 하는 다중 catch 블록을 가질 수 있음
예외 떠넘기기
throws 키워드
- 메소드에서 처리하지 않은 예외를 호출한 곳으로 넘기는 역할
- 메소드를 호출한 곳에서 다양한 방식으로 처리할 수 있도록 함
- throws 키워드 뒤에는 떠넘길 예외 클래스를 쉼표로 구분하여 나열
리턴타입 메소드이름(매개변수,...) throws 예외클래스1, 예외클래스2, ... { }리턴타입 메소드이름(매개변수,...) throws Exception { }
정리
- 예외 처리: 예외가 발생할 경우 프로그램의 갑작스러운 종료 막고 정상 실행 상태를 유지할 수 있도록 처리하는 것
- try-catch-finally 블록: 생성자 내부와 메소드 내부에서 작성되는 예외 처리 코드
- 다중 catch 블록: 예외 별로 예외 처리 방식을 다르게 할 경우 여러 개의 catch 블록을 가질 수 있다.
- throws 키워드: 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할