kiwi

Error와 Exception의 차이점과 대표적인 Exception

by 키위먹고싶다

Error란?

에러가 발생하면 프로그램이 죽는다. 

이는 시스템레벨에서 발생하기 때문에 심각한 수준의 오류이다. 

그러므로 개발자가 미리 예측하여 처리할 수 없다. 

 

Exception이란?

반면에 Exception은 발생하더라도 수습할 수 있는 비교적 덜 심각한 오류이다. 

예외는 코드로 비정상적인 종료를 막을 수 있다. 

 

에러와 예외모두 Throwable클래스를 상속받는다.

Exception은 많은 자식클래스를 가지고 있는데 그 자손들은 크게

Checked Exception(RuntimeExeption)과 Unchecked Exeption으로 나눌 수 있다.

이것을 나누는 기준에는 꼭 처리를 해야하느냐 아니냐를 들 수 있는데

CheckedException이 발생할 가능성이 있는 메소드는 반드시 try-catch문으로 감싸거나 throws로 던져서 

처리해야 한다. 반면에 UncheckedExceptiond은 반드시 명시적인 예외처리를 해야하는것은 아니다. 

이 예외는 피할 수 있지만 개발자가 부주의해서 발생하는 경우가 대부분이다. 

CheckedException은 컴파일 단계에서 발견될수 있으며, UncheckedException은 컴파일 단계에서 확인할 수 없는 예외라서 UncheckedException이며, 실행과정에서 발견된다는 의미로 RuntimeException인 것이다.

 

실행예외(RuntimeException)의 대표적인 예

- ArithmeticException : 0으로 나누기와 같은 부적절한 산술 연산을 수행할 때 발생.

- IllegalArgumentException : 메서드에 부적절한 인수를 전달할 때 발생.

- IndexOutOfBoundsException : 배열, 리스트 등에서 범위를 벗어난 인덱스를 사용할 때 발생.

- NoSuchElementException : 요구한 원소가 없을 때 발생.

- NullPointerException : null값을 가진 참조 변수에 접근할 때 발생.

- NumberFormatException : 숫자로 바꿀 수 없는 문자열을 숫자로 변환할 때 발생.

 

일반 예외

- ClassNotFoundException : 존재하지 않는 클래스를 사용하려고 할 때 발생.

- InterruptedException : 인터럽트(스레드를 종료하기 위한 메커니즘) 되었을 때 발생.

- NoSuchFieldException : 클래스가 명시한 필드를 포함하지 않을 때 발생.

- NoSuchMethodException : 클래스가 명시한 메서드를 포함하지 않을 때 발생.

- IOException : 데이터 읽기 같은 입출력 문제가 있을 때 발생.

'java' 카테고리의 다른 글

쓰레드  (0) 2021.12.10
Collections Framework 총 정리  (0) 2021.12.05
익명클래스, 추상클래스, 클래스의 차이점  (0) 2021.11.27
switch문  (0) 2021.11.21
IntelliJ 단축키  (0) 2021.11.21

블로그의 정보

kiwi

키위먹고싶다

활동하기