Exception & 예외 처리
Updated:
예외(Exception) 및 예외 처리 개념
Exception을 해석하면 ‘예외’라는 뜻을 가지고 있습니다. 예외는 error의 일종이며 프로그램이 수행시 또는 컴파일시에 불능상태를 만들어 버립니다. Exception이 발생하는 이유는 여러가지입니다. 잘못된 프로그램 조작 및 개발자 실수 등 여러가지 요인으로 인해 Exception이 발생합니다.
금융시스템 또는 365일 24시간 항상 구동되어야 할 시스템이 Exception으로 인해 시스템이 불능이 되거나 프로그램이 죽어버리게 되면 상당히 곤란할 것 입니다. 따라서 이를 막기 위해! 자바에서는 Exception 예외처리라는 방법을 통해 Exception error를 처리합니다.
예외 처리란 Exception 예외가 발생할 것을 대비하여 미리 예측해 이를 소스상에서 제어하고 처리하도록 만드는 것
Exception의 종류(일반예외, 실행예외)
Exception에는 크게 2가지 종류가 있습니다.
컴파일 시점에 발생하는 예외를 Exception(일반예외) 라고 하고,
프로그램 실행시에 발생하는 예외를 RuntimeException(실행예외) 라고 합니다.
즉, 예외가 발생하는 시점에 프로그램이 실행 전 후 상태에 따라 이를 구분하면 됩니다.
이 2가지 종류의 Exception 을 처리하기 위해 자바에서는 java.lang.Exception 이라는 최상위 부모 클래스를 제공합니다.
하늘색 Exception들은 단순 Exception입니다. 즉 컴파일 시 발생하는 Exception입니다. (일반예외)
초록색 RuntimeException은 프로그램 실행시 발생하는 런타임 Exception 입니다. (실행예외)
컴파일시 예외 검사 대상이 되는 일반예외는 예외 처리 코드에 반드시 감싸서 코드를 짜야합니다.. 반면 프로그램 실행이후 발생하는 실행예외는 따로 컴파일러가 예외 처리 코드를 강제하라고 하지 않기 때문에 온전히 개발자의 경험에 의해서 예외 처리 코드를 사용해야합니다.
ex)
실행예외 : NullPointerException
(NullPointerException : 실제 참조할 대상이 null인데 참조하려고 할때 발생하는 예외)
일반예외 : ClassNotFoundException
(ClassNotFoundException: 해당 클래스가 존재하지 않으면 발생하는 일반 예외)
예외처리 코드 및 실행 순서(Try-Catch-Finally)
예외 처리 코드 Try - Catch - Finally
Try 블록 : 실제 코드가 들어가는 곳으로써 예외 Exeption이 발생할 가능성이 있는 코드
Catch 블록 : Try 블록에서 Exeption이 발생하면 코드 실행 순서가 Catch 쪽으로 오게됨. 즉 예외에 대한 후 처리 코드
Finally 블록 : Try 블록에서의 Exeption과 발생 유무와 상관 없이 무조건 수행되는 코드 (옵션이라 생략이 가능)
public class trycatchTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
int [] num = new int[3];
System.out.println("num 배열의 최대 길이는 3입니다.");
num[4] = 0;
System.out.println("num[4] 에 값을 입력했습니다.");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("배열 길이가 맞지 않습니다.");
} finally {
System.out.println("배열을 다시 선언합니다");
int [] num = new int[5];
num[4] = 0;
System.out.println(num[4]);
}
System.out.println("프로그램을 종료합니다");
}
}
num 배열의 최대 길이는 3입니다.
배열 길이가 맞지 않습니다.
배열을 다시 선언합니다
0
프로그램을 종료합니다
Leave a comment