프로그램 수행 시 치명적 상황이 발생하여 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 함
error, exception
- 컴파일 에러 : 프로그램의 실행을 막는 소스 코드상의 문법 에러. 소스 코드 수정으로 해결.
- 런타임 에러 : 프로그램 실행 중 발생하는 에러. 주로 if문 사용으로 에러 처리
(ex. 배열의 인덱스 범위를 벗어났거나, 계산식의 오류)- 시스템 에러 : 컴퓨터 오작동으로 인한 에러, 소스 코드 수정으로 해결 불가
소스 코드 수정으로 해결 가능한 에러를 예외(Exception)라고 하는데
이러한 예외 상황(예측 가능한 에러) 구문을 처리 하는 방법인 예외 처리를 통해 해결
- java.lang.ArrayIndexOutOfBoundsException:
배열에서 부적절한 인덱스에 접근하려고 할 때 사용될 수 있는 예외- java.lang.NegativeArraySizeException:
배열의 크기로 음수를 제시했을때 발생할 수 있는 예외
Exception과 Error 클래스 모두 Object 클래스의 자손이며 모든 예외의 최고 조상은 Exception 클래스
반드시 예외 처리해야 하는 Checked Exception과 해주지 않아도 되는 Unchecked Exception으로 나뉨
- Unchecked Exception : 굳이 확인 안해도 되는 예외 : 선택적 예외처리
- Checked Exception : 확인 꼭 해야되는 예외 : 예외처리 필수
try~catch문을 이용하여 예외 처리
예외가 발생할 것 같은 코드 수행을 시도하다
-> 수행중 예외 발생시,예외 객체가 던져짐(throw)
catch(던진것을 받다) : try에서 던져진 예외를 잡아서 처리 -> 예외를 잡아 처리했기 때문에 프로그램이 종료되지 않음
- try : Exception 발생할 가능성이 있는 코드를 안에 기술
- catch : try 구문에서 Exception 발생 시 해당하는 Exception에 대한 처리 기술
여러 개의 Exception 처리가 가능하나 Exception간의 상속 관계 고려해야 함- finally : Exception 발생 여부와 관계없이 꼭 처리해야 하는 로직 기술**
중간에 return문을 만나도 finally구문은 실행되지만
System.exit();를 만나면 무조건 프로그램 종료
주로 java.io나 java.sql 패키지의 메소드 처리 시 이용
오버라이딩 시 throws하는 Exception의 개수와 상관없이 처리 범위가 같거나 후손 이여아 함