Java/개념

예외처리(Exception)

GeunOh 2020. 1. 14. 20:25

오류

- 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 함

 

오류의 종류

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의 부모이기 때문에 불가능.