old/Java

Java 예외(exeception) 종류 (일부)

물 개 2020. 11. 15. 22:05

출처 : docs.oracle.com/javase/8/docs/api/

번역 : 파파고 98% + 나 2%

주의 : 모든 예외가 있는 게 아닙니다. 추후에 추가하겠습니다><

이 글도 참고해 보세요👉 blog.naver.com/eyeballss/221183717598

예외 이름

종류

설명

비고

Exception

수퍼클래스

모든 예외 클래스들의 부모 클래스

 

CloneNotSupportedException

일반 예외

객체를 복제하기 위해 clone() 메소드가 호출됐지만 해당 객체가 clonable 인터페이스를 구현하지 않았을 때.

 

InterruptedException

일반 예외

스레드가 일을 끝마치지 못했는데 waiting, sleeping, otherwise occupied(기타 점유)에서 깨어나지 못하거나 interrupt()로 종료되었을 때

 

ReflectiveOperationException

수퍼클래스

핵심 리플렉션(투영) 기능 중 투영하는 작업에 의해 발생하는 예외들의 보편적인 수퍼클래스.

리플렉션이란?

ClassNotFoundException

일반 예외

어플리케이션이 문자열(이름)로 클래스를 로드하려고 하지만 해당 문자열을 이름으로 가진 클래스를 찾을 수 없을 때.
ex)Class.forName() 메소드를 사용했지만 매개값으로 주어진 클래스가 존재하지 않을 때

ReflectiveOperationException 상속

IllegalAccessException

일반 예외

어플리케이션이 반사적으로 배열이 아닌 인스턴스를 생성하거나, 필드를 set/get 하거나, 메소드를 호출하려고 하지만 현재 실행중인 메소드는 지정된 클래스, 필드, 메소드 또는 생성자의 정의에 접근할 수 없을 때.

ReflectiveOperationException 상속

InstantiationException

일반 예외

다양한 이유로 클래스를 인스턴스화 할 수 없을 때 발생.
ex 1) 추상 클래스, 인터페이스, 배열 클래스, 기본 타입, void 를 객체화하려고 했을 때.
2) 클래스에 매개변수 없는 생성자(nullary constructor)가 없을 때

ReflectiveOperationException 상속

NoSuchFieldException

일반 예외

특정 클래스가 지정된 이름의 필드를 가지고 있지 않을 때

ReflectiveOperationException 상속

NoSuchMethodException

일반 예외

특정 메소드를 찾을 수 없을 때

ReflectiveOperationException 상속

RuntimeException

수퍼클래스

JVM의 정상 작동 중에 발생될 수 있는 예외 중 컴파일러가 체크하지 않는 예외들의 수퍼클래스.

 

IllegalArgumentException

실행 예외

부적절한 매개변수값(=실인수, argument)이 메소드를 통과했을 경우

 

IllegalThreadStateException

실행 예외

스레드가 요청된 작업을 처리하기에 적합한 상태가 아닐 때

IllegalArgumentException 상속

NumberFormatException

실행 예외

어플리케이션이 문자열을 숫자형으로 변환하려고 시도했지만, 숫자로 변환될 수 없는 문자가 포함되어 있을 때.

IllegalArgumentException 상속

IndexOutOfBoundsException

실행 예외

배열, 문자열, 벡터 같은 특정 객체의 인덱스가 범위를 벗어났을 때

 

ArrayIndexOutOfBoundsException

실행 예외

잘못된 인덱스로 배열에 접근했을 때. 인덱스가 음수이거나 배열 크기보다 크거나 같을 때.

IndexOutOfBoundsException 상속

StringIndexOutOfBoundsException

실행 예외

음수이거나, String의 size보다 큰 인덱스를 사용하려고 할 때

IndexOutOfBoundsException 상속

ArithmeticException

실행 예외

예외적인 산술 조건이 발생했을 때.
Ex) 정수를 0으로 나누기.

 

ArrayStoreException

실행 예외

잘못된 타입의 객체를 배열에 저장하려고 시도했을 때.

 

ClassCastException

실행 예외

객체를 인스턴스가 아닌 하위 클래스로 캐스팅하려고 했을 때.

 

EnumConstantNotPresentException

실행 예외

어플리케이션이 열거상수에 접근하려고 했지만 열거객체에 해당 이름의 상수가 없을 때.

 

IllegalMonitorStateException

실행 예외

스레드가 지정된 모니터를 소유하지 않고 객체의 모니터에서 대기 중임을 알리거나, 객체의 모니터에서 대기 중인 다른 스레드를 알리기 위해 발생

 

IllegalStateException

실행 예외

메소드가 부적절한 타이밍에 호출되었음을 알리는 예외. 즉, 자바 환경이나 자바 어플리케이션이 요청된 작업을 수행할 수 없는 상태일 때.

 

NegativeArraySizeException

실행 예외

음수 크기를 가진 배열을 만들려고 할 때

 

NullPointerException

실행 예외

어플리케이션이 null을 사용하려고 할 때.
ex 1) null 객체의 필드에 액세스
2) null 객체의 인스턴스 메소드를 호출
3) null이 배열인 것처럼 길이를 요구할 때
4) null이 배열인 것처럼 공간(slots)에 접근할 때
5) null을 throw 할 때

 

SecurityException

실행 예외

보안이 위반됐을 때 보안관리자가 알리기 위해 throw

 

TypeNotPresentException

실행 예외

어플리케이션이 데이터 타입 이름을 나타내는 문자열을 사용하여 데이터 타입에 접근하려고 하지만, 지정된 이름을 가진 데이터 타입에 대한 정의를 찾을 수 없을 때

 

UnsupportedOperationException

실행 예외

요청된 작업(메소드 등)이 지원되지 않는 작업일 때