- 익셉션을 밖으로 던지는 메서드
다음은 파라미터로 받은 인수를 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; } }
|
'Java' 카테고리의 다른 글
자바 프로그래밍 (Java) - 21 : 예외 처리 방법 (0) | 2016.07.13 |
---|---|
자바 프로그래밍 (Java) - 20 : 예외의 구분 (Checked Exception, Unchecked Exception), 인위적 예외 발생 방법 (throw) (0) | 2016.07.13 |
자바 프로그래밍 (Java) - 18 : 객체와 클래스 (필드 초기화 및 이름 명명 규칙) (0) | 2016.07.12 |
자바 프로그래밍 (Java) - 17 : 객체와 클래스 (명시적 생성자 호출 : this, this with constructor) (0) | 2016.07.12 |
자바 프로그래밍 (Java) - 16 : 객체와 클래스 (static method, this) (0) | 2016.07.12 |