예외처리(Exception)
오류
- 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 함
오류의 종류
1. 컴파일 에러 : 문법 에러, 소스 구문을 수정하여 해결
2. 런타임 에러 : 입력값이 틀렸거나 배열의 인덱스 범위를 벗어났거나, 주로 if문 사용으로 에러 처리
3. 시스템 에러 : 컴퓨터 오작동으로 인한 에러, 소스 구문으로 해결 불가
오류 해결 방법
- 소스 수정으로 해결 가능한 에러를 예외 라고 하는데 이러한 예외 상황구문을 처리하는 방법
Exception 과 에러는 모두 Object 클래스의 자손
모든 예외의 최고 조상은 Exception 클래스
Unchecked Exception - 예외 처리 안해도 되는 예외 (RuntimeException 밑에 있으면 처리 안해도 됨)
Checked Exception - 예외 처리 해야되는 예외
RuntimeException 클래스
- 주로 프로그래머의 부주의로 생기는 경우가 많기 때문에 예외 처리보다 코드를 수정해야 하는 경우가 많다
- ArithmeticException : 0으로 나누는 경우 발생함 / if문으로 나누는 수가 0인지 검사
- NegativeArraySizeException : 배열 크기를 음수로 지정한 경우 발생
- ClassCastException : cast연산자 사용 시 타입 오류 / instanceof연산자로 객체 타입 확인후 연산
try~catch 문
- try : Exception이 발생할 가능성이 있는 코드를 안에 적음
- catch : exception 발생 시 해당하는 exception에 대한 처리
여러개의 exception처리가 가능하나 exception간의 상속 고려
- finally : exception 발생여부와 상관없이 무조건 실행
Exception과 오버라이딩
- 오버라이딩 시 throw하는 Exception의 개수와 상관없이 처리 범위가 좁아야 함
EOFException는 IOException의 자식이기 때문에 가능함.
Exception은 IOException의 부모이기 때문에 불가능.