티스토리 뷰

예외처리에 대한 기본적인 공부를 마무리하고

(링크를 통해 예외처리에 대한 기본적인 공부를 하시면 됩니다.)


사용자 정의 예외처리에 대해 실습으로 공부하겠습니다.



사용자 정의 예외를 사용하기 위한 ExceptionTest 클래스

public class ExceptionTest {

	// Checked Exception :
	// Exception 클래스 상속받은 예외
	public void foo(int n) throws MyException {
		// foo() 라는 메소드를 호출했을 때
		// MyException 예외가 날 수 있으니 처리하라.

		// 예외가 발생 될 조건
		if (n < 0) {
			// 예외 발생!
			// 예외 발생 시에 예외 객체를 만들어서 catch문에 던진다.
			throw new MyException();
		} else {
			System.out.println("foo(int): " + n);
		}
	}

	// RuntimeException 클래스를 상속받은 예외는 throws를 반드시 써줄 필요는 없다.
	// 하지만 쓰는것이 좋다.
	public void goo(int n) throws MyRuntimeException {
		if (n < 0) {
			throw new MyRuntimeException("음수가 매개변수로 들어 올 수 없다.");
		} else {
			System.out.println("goo(int): " + n);
		}
	}
}



사용자 정의 예외(Exception) 클래스 입니다.

public class MyException extends Exception{ // 사용자정의 예외처리를 만들 수 있다.
	// 1) getMessage 오버라이딩
	// 2) 생성자에서 예외 메세지 입력
	
	@Override
	public String getMessage(){
		return "매개변수가 음수입니다.";
	}
}



사용자 정의 예외(RuntimeException)클래스 입니다.

public class MyRuntimeException extends RuntimeException{	
	
	// 예외 메세지를 외부에서 입력 받아 사용한다.
	public MyRuntimeException (String errmsg){
		super(errmsg);
	}
}



사용자 정의 예외(Exception) 클래스를 사용하는 메인(main) 클래스 입니다.

public class ExampleException{

	public static void main(String[] args) {
		ExceptionTest exceptionTest = new ExceptionTest();
		try {
			exceptionTest.foo(-10);
			// 반드시 예외를 처리해라
			// Exception 클래스를 상속한 Checked Exception 이기 때문이다.
		} catch (MyException e) {
			// TODO Auto-generated catch block
			// e.printStackTrace();
			System.out.println(e.getMessage());
		} 
		// 예외처리가 된 것이다.
		try{
		exceptionTest.goo(-1); 
		}catch(MyRuntimeException e){
			System.out.println(e.getMessage());
		}

		exceptionTest.goo(-1); // 예외처리가 되지 않은 경우		
	}
}


반응형
LIST
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함