[JAVA] 예외 처리

 

 

<예외 처리 (Exception Handing)>

- 프로그램 수행 시 치명적 상황이 발생하여 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 함

 

 

1) 오류의 종류

 

(1) 컴파일 에러

- 프로그램의 실행을 막는 소스 상의 문법 에러, 소스 구문을 수정하여 해결

 

(2) 런타임 에러

- 입력 값이 틀렸거나, 배열의 인덱스 범위를 벗어났거나, 계산식의 오류 등

- 주로 if문 사용으로 에러를 방지

 

 

2) 예외 클래스 계층 구조

 

- 프로그램 수행 -> 예외사항 발생 -> JVM이 해당 예외 상황에 맞는 Exception 클래스를 찾아 객체로 만듦

-> 객체로 만들어 졌을 때 빨간 글씨가 나오면서 어디서 예외가 발생했는지 안내 -> 프로그램 종료

 

- 자바 실생 시 발생하는 예외는 모두 클래스로 작성되어 있다

 

 

 

 

3) 예외 처리 방법

 

(1) Exception이 발생한 곳에서 직접 처리

- try~catch문을 이용하여 예외 처리

 

(2) try

- Exception 발생할 가능성이 있는 코드를 안에 기술

- 수행 중 예외 발생 시 예외 객체가 던져짐(throw)

 

(3) catch

- try 구문에서 Exception 발생 시 해당하는 Exception 에 대한 처리 기술

- 여러 개의 Exception 처리가 가능하나 Exception간의 상속 관계 고려해야 함

- try에서 던져진 예외를 잡아서 처리

- 예외를 잡아서  처리했기 떄문에 프로그램이 종료하지 않음

 

(4) Exception 처리를 호출한 메소드에게 위임

- 메소드 선언 시 throw Exception명을 추가하여 호출한 상위 메소드에게 처리 위임

- 계속 위임하면 main() 메소드까지 위임하게 되고

- main() 메소드에서도 처리되지 않는 경우 프로그램이 비정상 종료됨

 

<Exception과 오버라이딩>

 

- 오버라이딩 시 throws하는 Exception의 개수와 상관없이 처리 범위가 같거나 후손 이어야 함