예외(exception)
사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말하며, 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서는 에러와 비슷하지만 예외는 예외 처리(exception handling)를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있음.
일반 예외(exception)
컴파일러 체크 예외라도고 하는데, 프로그램 실행 시 예외가 발생할 가능성이 높기 때문에 자바 소스를 컴파일하는 과정에서 해당 예외 처리 코드가 있는지 검사하고, 만약 예외 처리 코드가 없다면 컴파일 오류가 발생함.
실행 예외(runtime exception)
컴파일러 넌 체크 예외라고도 하는데, 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않음.
실행 예외는 자바 컴파일러가 체크하지 않기 때문에 오로지 개발자의 경험에 의해서 예외 처리 코드를 작성해야 하며, 만약 개발자가 실행 예외에 대해 예외 처리 코드를 넣지 않았을 경우, 해당 예외가 발생하면 프로그램은 곧바로 종료됨.
NullPointerException
자바 프로그램에서 가장 빈번하게 발생하는 실행 예외는 java.lang.NullPointerException인데, 이것은 객체 참조가 없는 상태, 즉 null 값을 갖는 참조 변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생함. 객체가 없는 상태에서 객체를 사용하려 했으니 예외가 발생.
ArrayIndexOutOfBoundsException
배열에서 인덱스 범위를 초과할 경우 실행 예외인 java.lang.ArrayIndexOutOfBoundsException이 발생.
NumberFormatException
| 리턴 타입 | 메소드 이름(매개 변수) | 설명 |
| int | Integer.parseInt(String s) | 주어진 문자열을 정수로 변환해서 리턴 |
| double | Double.parseDouble(String s) | 주어진 문자열을 실수로 변환해서 리턴 |
이 메소드들은 매개값인 문자열이 숫자로 변환될 수 있다면 숫자로 리턴하지만, 숫자로 변환될 수 없는 문자가 포함되어 있다면 java.lang.NumberFormatException을 발생시킴.
ClassCastException
타입 변환(casting)은 상위 클래스와 하위 클래스 간에 발생하고 구현 클래스와 인터페이스 간에도 발생하는데, 이러한 관계가 아니라면 클래스는 다른 타입으로 변환할 수 없기 때문에 ClassCastException이 발생함.
ClassCastException을 발생시키지 않으려면 타입 변환 전에 변환이 가능한지 instanceof 연산자로 확인하는 것이 좋음.
instanceof 연산의 결과가 true이면 좌향 객체를 우항 타입으로 변환이 가능하다는 뜻.
'Java' 카테고리의 다른 글
| [JSP] 내장 객체_1 (0) | 2025.12.03 |
|---|---|
| [Java] 예외 처리 (1) | 2025.11.15 |
| [Java] 익명 객체 (0) | 2025.11.15 |
| [Java] 중첩 클래스와 중첩 인터페이스 (0) | 2025.11.15 |
| [Java] 타입 변환과 다형성 (0) | 2025.11.14 |