Java

자바 프로그래밍 (Java) - 19 : 예외 처리 (try - catch)

n.han 2016. 7. 13. 08:33

- 익셉션을 밖으로 던지는 메서드

 

다음은 파라미터로 받은 인수를 0으로 나누는 메서드이다. 당연히 Arithmetic Exception (Divided by Zero)를 발생 시킨다.

 

그런데 에러 코드를 보면 예외가 두곳에서 발생한 것을 알 수 있다. 그 이유는 무엇일까?

 

 

public class Hello {

        public static void main(String[] args) {

               int num = 10;

               devideByZero(num);

        }

       

        public static void devideByZero(int num){

               num = num / 0;

        }

}

Exception in thread "main" java.lang.ArithmeticException: / by zero

        at Chap01.Hello.devideByZero(Hello.java:10)

        at Chap01.Hello.main(Hello.java:6)

 

자바에서는 메서드 안에서 처리하지 못한 모든 예외를

 

메서드 밖으로 던져지기 때문에 에러 메시지가 두곳으로 표시된 것이다.

 

다시 말해, devideByZero 함수 안에서 예외가 발생했고,

 

이 예외를 핸들링하지 않아서 예외가 devideByZero를 호출한 곳으로 던져진 것이다. 이것을 핸들링하는 방법은 두 가지이다.

 

1) 예외가 발생한 메서드 내부에서 예외를 핸들링한다.

 

2) 예외가 던져지는 곳에서 예외를 핸들링한다.

 

 

public class Hello {

        public static void main(String[] args) {

               int num = 10;

               devideByZero(num);

        }

       

        public static void devideByZero(int num){

               try {

                       num = num / 0;

               } catch (Exception e) {

                       System.out.println(e);

               }

        }

}

public class Hello {

        public static void main(String[] args) {

               int num = 10;

               try {

                       devideByZero(num);

               } catch (Exception e){

                       System.out.println(e);

               }

        }

        public static void devideByZero(int num){

               num = num / 0;

        }

}