- Exception Handling
다음은 10을 들어온 인자로 나누는 메서드이다.
메서드 내부에서 인자 값이 0이면 인위적으로 예외를 발생시키도록 작성한 것을 볼 수 있다.
이 예외는 Checked Exception이기 때문에, 다음과 같이 하지 않으면 컴파일 에러가 발생한다.
1) 예외가 발생한 메서드에 throws Exception으로 발생한 예외를 호출한 곳으로 던진다.
2) 메서드 내부적에서 try – catch로 예외를 핸들링한다.
이 경우 첫 번째 방법이 권장된다. 그 이유는 메서드 내부에서 예외를 발생 시키고,
이를 다시 예외를 발생시킨 곳에서 try - catch문으로 핸들링한다는 것은 예외 처리라는 의미가 없어지기 때문이다.
다시말해 메서드 내부에서 예외가 발생하면 메서드를 호출한 개발자가 예외가 발생했다는 사실을 알고 싶은 경우가 많고,
이를 개발자가 처리할 수 있는 여지를 주어야 한다는 것이다.
그렇지 않고 내부적으로 예외를 처리하면 그 메서드를 호출한 곳은 예외가 발생했는 지 여부조차 알 수가 없다.
public class Hello { public static void main(String[] args) { try { devideByParam(0); } catch (Exception e){ System.out.println(e); } } public static void devideByParam(int num) throws Exception { if (num == 0) throw new Exception("잘못된 num입니다."); else { System.out.println(10 / num); } } }
'Java' 카테고리의 다른 글
자바 프로그래밍 (Java) - 23 : 상속 (개관) (0) | 2016.07.13 |
---|---|
자바 프로그래밍 (Java) - 22 : 정적 구성 요소(static)와 기능 클래스, 정적 초기화 블록(static initialization block) (4) | 2016.07.13 |
자바 프로그래밍 (Java) - 20 : 예외의 구분 (Checked Exception, Unchecked Exception), 인위적 예외 발생 방법 (throw) (0) | 2016.07.13 |
자바 프로그래밍 (Java) - 19 : 예외 처리 (try - catch) (0) | 2016.07.13 |
자바 프로그래밍 (Java) - 18 : 객체와 클래스 (필드 초기화 및 이름 명명 규칙) (0) | 2016.07.12 |