728x90
반응형
SMALL
컴퓨터 하드웨어의 오동작 또는 고장으로 인해 발생하는 것을 에러(error)라고 하며, 이러한 에러 이외에 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 예외(exception)라고 말한다.
예외가 발생하면 프로그램은 곧바로 종료된다는 점에서 에러와 비슷하지만, 예외 처리(exception handling)를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.
자바는 예외가 발생할 가능성이 높은 코드를 컴파일할 때 예외 처리 유무를 확인하며, 예외 처리 코드가 없다면 컴파일이 되지 않는다.
하지만 모든 예외에 대해 확인하지는 않기 때문에 예외의 종류부터 알아보자.
<예외와 예외 클래스>
예외는 두 가지 종류가 있다.
- 일반 예외(exception)
- 컴파일러 체크 예외
- 프로그램 실행 시 예외 발생 가능성이 높기 때문에 예외 처리 코드가 있는지 검사
- 예외 처리 코드가 없으면 컴파일 오류 발생
- 실행 예외(runtime exception)
- 컴파일러 넌 체크 예외
- 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않음
다음과 같은 예외를 자바에서는 클래스로 관리한다.
JVM은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성한다.
후에 예외 처리 코드에서 예외 객체를 이용할 수 있도록 한다.
모든 예외 클래스는 다음과 같이 java.lang.Exception 클래스를 상속받는다.
일반 예외와 실행 예외 클래스는 RuntimeException 클래스를 기준으로 구별한다.
RuntimeException의 하위 클래스가 아니면 일반 예외 클래스이고, 하위 클래스이면 실행 예외 클래스이다.
RuntimeException의 종류는 다음과 같다.
- ArithmeticException : 정수를 0으로 나누었을 경우 발생
- ArrayStoreException : 배열 유형이 허락하지 않는 객체를 배열에 저장하려는 경우 발생
- ArrayIndexOutOfBoundsException : 배열이 참조하는 인텍스가 잘못된 경우 발생
- ClassCastException : 적절치 못하게 Class를 형변환하는 경우
- NullPointerException : Null 객체를 참조하려는 경우 발생
- NegativeArraySizeException : 배열의 크기가 음수인 경우
- NoClassDefFoundException : 클래스를 찾을 수 없는 경우
- outOfMemoryException : 사용 가능한 메모리가 없는 경우
- IndexOutOfBoundsException : 객체의 범위를 벗어난 색인(Index)를 사용하는 경우
- IIIegalArgumentException : 메서드에 유형이 일치하지 않는 매개변수를 전달하는 경우
- IIIegalMonitorStateException : 스레드가 스레드에 속하지 않는 객체를 모니터 하려고 기다리는 경우
- IIIegalStateException : 적절하지 않은 때에 메서드를 호출하는 경우
728x90
반응형
LIST
'프로그래밍언어 > Java' 카테고리의 다른 글
11-1 java.lang 패키지(1) (0) | 2022.02.23 |
---|---|
10-2 예외 처리 (0) | 2021.12.27 |
09-2 익명 객체 (0) | 2021.12.14 |
09-1 중첩 클래스와 중첩 인터페이스 소개 (0) | 2021.06.29 |
08-2 타입 변환과 다형성 (0) | 2021.06.28 |