예외클래스
docs.oracle.com/javase/8/docs/api/java/lang/Exception.html
Exception
|
|--- IOException
|--- ClassNotFoundException
|--- ...
|--- RuntimeException
|--- ArithmeticException
|--- ClassCastException
|--- NullPointerException
|--- ...
|--- IndexOutOfBoundsException
InputMismatchException |
타입이 맞지 않을때 ex) int 인데 숫자가 아닌 다른 것이 입력되었을 때 |
ArithmeticException |
산술연산 에러 ex) 나누는 수가 0일 때 (10/0) |
NullPointerException |
참조값이 없는 경우 |
ArrayIndexOutOfBoundsException |
배열의 범위에서 인덱스 값을 벗어난 경우 |
ClassCastException |
적절치 못하게 클래스를 형변환 하는 경우 |
NegativeArraySizeException |
배열의 크기가 음수값인 경우 |
OutOfMemoryException |
사용 가능한 메모리가 없는 경우 |
NoClassDefFoundException |
원하는 클래스를 찾지 못한 경우 |
NumberFormatExcpeion |
문자열을 숫자로 변경할 때 숫자가 변환될 수 없는 문자가 포함되어있음 |
실행 예외 (RuntimeException)
- 예외가 발생하면 JVM은 해당하는 실행 예외 객체를 생성
- 실행 예외는 컴파일러가 예외 처리 여부를 확인하지 않음. 따라서 개발자가 예외 처리 코드의 추가 여부를 결정
- 대표적인 실행 예외 예
실행 예외 |
발생 이유 |
ArithmeticException |
0으로 나누기와 같은 부적절한 산술 연산을 수행할 때 발생 |
IllegalArgumentException |
메서드에 부적절한 인수를 전달할 때 발생 |
IndexOutOfBoundsException |
배열, 벡터 등에서 범위를 벗어난 인덱스를 사용할 때 발생한다. |
NoSuchElementException |
요구한 원소가 없을 때 발생한다. |
NullPointerException |
null 값을 가진 참조 변수에 접근할 때 발생한다. |
NumberFormatException |
숫자로 바꿀 수 없는 문자열을 숫자로 변환하려 할 때 발생한다. |
일반 예외
- 컴파일러는 발생할 가능성을 발견하면 컴파일 오류를 발생
- 개발자는 예외 처리 코드를 반드시 추가
- 대표적인 일반 예외 예
일반 예외 |
발생 이유 |
ClassNotFoundException |
존재하지 않는 클래스를 사용하려고 할 때 발생한다. |
InterruptedException |
인터럽트 되었을 때 발생한다. |
NoSuchFieldException |
클래스가 명시한 필드를 포함하지 않을 때 발생한다. |
NoSuchMethodException |
클래스가 명시한 메서드를 포함하지 않을 때 발생한다. |
IOException |
데이터 읽기 같은 입출력 문제가 있을 때 발생한다. |