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
키위먹고싶다