커스텀 예외처리 정의?
- 표준 예외클래스가 아닌 예외클래스를 만들어보자.
- checked / unchecked 어느 예외를 사용할 것인지 정해야한다.
checked / unchecked를 정하는 기준?
- API쪽에서 예외를 던졌을 때 API 사용자 쪽에서 예외상황을 복구할 수 있다면 checked 예외를 사용한다.
- 사용자가 API의 사용방법을 어겨서 발생하는 문제거나 예외상황이 이미 발생한 시점에서 그냥 프로그램을 종료하는 것이 덜 위험할 때 unchecked를 사용한다.
unchecked 예외 소스
package org.opentutorials.javatutorials.exception; class DivideException extends RuntimeException { DivideException(){ super(); } DivideException(String message){ super(message); } } class Calculator{ int left, right; public void setOprands(int left, int right){ this.left = left; this.right = right; } public void divide(){ if(this.right == 0){ throw new DivideException("0으로 나누는 것은 허용되지 않습니다."); } System.out.print(this.left/this.right); } } public class CalculatorDemo { public static void main(String[] args) { Calculator c1 = new Calculator(); c1.setOprands(10, 0); c1.divide(); } } | cs |
- checked 예외 : 반드시 예외처리를 해야하는 예외.
- unchecked 예외 : 예외처리를 해도 되고 안해도 되는 예외.
출처: http://gurumnote.com/107 [NOTE]
출처: http://gurumnote.com/107 [NOTE]
checked 예외 소스
class DivideException extends Exception { DivideException(){ super(); } DivideException(String message){ super(message); } } class Calculator{ int left, right; public void setOprands(int left, int right){ this.left = left; this.right = right; } // 상위클래스로 예외를 전가시킴. public void divide() throws DivideException{ if(this.right == 0){ throw new DivideException("0으로 나누는 것은 허용되지 않습니다."); } System.out.print(this.left/this.right); } } public class CalculatorDemo { public static void main(String[] args) { Calculator c1 = new Calculator(); c1.setOprands(10, 0); // 상위클래스인 여기서 예외처리. try { c1.divide(); } catch (DivideException e) { e.printStackTrace(); } } } | cs |
unchecked 와 checked의 설명은 아래 링크 클릭
2017/10/20 - [STUDY/JAVA] - 예외처리4