KH_JAVA_13_예외처리
예외와 예외 클래스
오류의 종류
1. 에러
- 하드웨어의 잘못된 동작 또는 고장으로 인한 오류
- 에러가 발생되면 프로그램 종료
- 정상 실행 상태로 돌아갈 수 없음
2. 예외(Exception)
- 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인한 오류, 즉 프로그램이 실행되는 동안에 발생하는 예기치 않은 에러를 의미한다.
- 예외가 발생되면 프로그램 종료
- 예외 처리 추가하면 정상 실행 상태로 돌아갈 수 있음
3. 예외처리
- 예외가 발생했을 경우에 프로그램의 비정상적인 종료를 막고 정상 실행을 유지할 수 있도록 처리하는 것을 의미한다.
예외의 종류
1. 일반(컴파일 체크) 예외(Exception)
- 예외 처리 코드가 없으면 컴파일 오류 발생
2. 실행 예외(RuntimeException)
- 예외 처리 코드를 생략하더라도 컴파일이 되는 예외
- 경험 따라 예외 처리 코드 작성 필요
예외 클래스는 아래와 같다.
실행 예외
1. NullPointerException
객체가 없는 상태에서 객체를 사용할 경우에 해당 예외가 발생한다.
아래는 NullPointerException 의 예시 코드이다.
package com.kh.runTimeException;
public class NullPointerException {
public static void main(String[] args) {
String data = null;
if(data.equals("hi")) {
System.out.println("hi");
}
}
}
2. ArrayIndexOutOfBoundsException
배열에서 인덱스 범위를 초과하여 사용할 경우에 발생한다.
3. NumberFormatException
문자열로 되어 있는 데이터를 숫자로 변경하는 경우에 발생한다.
4. ClassCastException
타입 병환은 상위 클래스와 하위 클래스 간에 발생하고 구현 클래스와 인터페이스 간에도 발생한다. 이러한 관계가 아니라면 클래스는 다른 클래스로 타입 변환 할 수 없다. 억지로 타입 변환을 시도할 경우에 예외가 발생한다.
예외 처리 코드
예외 발생시 프로그램 종료를 막고, 정상 실행 유지할 수 있도록 처리
일반 예외: 반드시 작성해야 컴파일 가능
실행 예외: 컴파일러가 체크해주지 않으며 개발자 경험 의해 작성
try – catch – finally 블록 이용해 예외 처리 코드 작성
- try 블록의 코드가 예외 발생 없이 정상 실행되면 catch 블록의 코드는 실행되지 않고 finally 블록의 코드를 실행한다.
- try 블록의 코드에서 예외가 발생하면 즉시 실행을 멈추고 catch 블록으로 이동하여 예 외 처리 코드를 실행한다.
- try 블록과 catch 블록에서 return문을 사용하더라도 finally 블록은 항상 실행된다.