본문 바로가기

IT 이야기/JAVA

7. 예외처리


7.1 예외의 개요


JVM은 프로그램 실행 중에 예외가 발생하면 관련된 예외 클래스로부터 예외 객체를 생성하여
프로그램에서 지정된 예외처리 루틴에게 넘겨준다.

프로그램에 지정된 예외 처리 루틴은 예외가 발생되었을 때 JVM에 의해 호출되며
예외 객체를 JVM 으로부터 넘겨받아 적절한 처리를 수행한다.


class Error {

public static void main(String[] args) {
x();
}

static void x() {
y();
}

static void y() {
z();
}

static void z() {
int i = 1 ;
int j = 0 ;
  System.out.println(i/j);
}
}

ArithmeticException : /by zero 발생!!

java.lang.ArithmeticException: /by zero
at Error.z(Error.java:14)
at Error.y(Error.java:9)
at Error.x(Error.java:6)
at Error.main(Error.java:3)

call stack 이므로  function(z) 부터 function(main) 출력하게 된다.

 

예외 처리 루틴이 없는 프로그램을 수행 중에 예외가 발생하면 JVM 은 묵시적인 예외 처리기를 작동시켜 처리한다.

JVM의 묵시적인 예외 처리기는 예외가 발생하면 예외 객체를 생성시키고 예외가 발생된 메소드에서 ERROR 를 출력하고, 그 메소드를 호출한 메소드에게 예외를 반환한다. 즉 예외가 발생하면 발생된 예외는 메소드 호출 순서에 따라 계속하여 반환된다.



7.2 예외 관련 클래스

Throwable 클래스는 Error 클래스와 Exception 클래스를 하위 클래스로 가진다.

Error클래스는 Throwable 클래스로부터 상속된 클래스로서 주로 하드웨어 관련 예외를 처리하는 클래스이다.
이러한 종류의 예외는 프로그램에서 처리하지 않고 JVM에게 맡겨지는 것이 일반적이다.

Exception클래스도 Throwable 클래스로부터 상속된 클래스로서 많은 하위 클래스를 가지고 있다.
그 중 RuntimeException  과 관련된 예외들도 Error 클래스처럼 프로그램에서 지정하지 않는다.
그이유는 프로그램 에서 에러처리 해 주어야하는 비용이 얻을 수 있는 비용 보다 크기때문에 일반적으로 JVM 에
맡기는 것이 더욱 효율적이다.

자바는 RuntimeException 과 Error 클래스를 제외한 나머지 클래스와 관련된 예외는 프로그램에서 처리 하도록 요구하고 있다.


7.3 예외 처리



try{

// error 가 발생할 수 있는 AREA

}
catch(Exception e) {
// 처리 방법
}
finally {

}



'IT 이야기 > JAVA' 카테고리의 다른 글

9. 패키지와 주요 클래스  (0) 2010.11.15
8. 다중스레드  (0) 2010.11.11
6. 인터페이스  (0) 2010.11.08
5. 상 속  (0) 2010.11.08
4. 클래스  (0) 2010.10.27