Java 등 여러 프로그래밍 언어에는 '예외처리'가 있다.
예외처리는 무엇이고, 언제 진행되며, 왜 쓰는지에 대한 이해를 먼저 하고자 한다. 제일 익숙한 구문은 try~catch문 일 것이다.
일단 예외처리는 프로그램 컴파일 중이 아닌 실행중에 발생하는 오류이다. 예외가 발생하면 그 실행이 정상적으로 이루어지지 않기 때문에 예외처리에서는 예기치 못한 사건들을 다루고, 만약 예외가 발생했을 경우 '~한 방법으로 처리해'라고 프로그래머가 직접 정의하거나 System에서 정의하는 처리 방법이 있다.
그렇다면 예외처리는 왜 사용하는걸까? 프로그래머가 만든 프로그램을 다른 사용자가 사용할 때 비정상적인 상황(예외)를 만나더라도 내 프로그램이 비정상적으로 종료되는 것이 아니라 다음 번 사용시에도 정상적으로 실행되고 프로그램이 종료될 수 있도록 하기 위해서이다.
예외클래스 종류
예외처리는 Object 클래스로부터 상속받는 Throwable 클래스로부터 Error클래스와 Exception 클래스로 나뉜다.
즉 Java의 모든 예외는 Throwable 클래스로부터 상속받는 것이다.
그중에서도 Error 클래스는 시스템에 변화를 주어야 하기 때문에 프로그래머가 직접 해결하기가 어렵다.
Error 클래스를 상속받는 예외들은 H/W 관련 문제이거나 디스크 포맷이 망가지거나 StackOverFlow와 같은 문제이다.
반면에 Exception 클래스는 RuntimeException(ex.ArithmeticException,NullPointerException...)과 Instantiation Exception으로 나뉜다.
예외 클래스
위에서 Exception은 상속 받고, 또 상속을 받아 사용한다고 했다. 상속의 개념은 Class에 있는 개념이므로 클래스가 있다면 객체도 있어야 한다.
자바는 예외 하나하나를 '객체'로 취급하며 예외가 객체로 취급되기 위해서는 클래스가 있어야 하는 것이다.
자바의 모든 패키지 중에 기본 패키지가 되는 것은 java.lang이다.