본문 바로가기
개발자 양성과정 필기노트/JAVA

사용자 정의 예외

by jono 2021. 11. 13.

1. 사용자정의 예외 메세지

# 기본문법

- 개발자에 의해 논리적 오류로 취급해야하는 코드에서 해당 코드의 호출부로 예외발생사실을 표시하기 위해 활용함.

- 예외가 발생해야하는 위치에 throw 키워드를 사용하여 정의한다.

throw new 예외클래스명("예외메세지")
public class Ex05 {
	public static void main(String[] args) {
		System.out.println("프로그램시작");
		int score=186;
		try {
			grade(score);//주로 메서드 호출부에서 예외처리를 한다.
		} catch (ArithmeticException e) {//정상범위의 점수가 아닌 경우에 수행할 작업.
			//System.out.println("점수입력 오류: "+score);
			System.out.println(e.getMessage()+score);//점수 입력 오류입니다. 점수: 186
		}
		System.out.println("프로그램종료");
	}//---------------메인메서드-------------------
    
//학점 계산을 위해 score 전달받아 학점 출력하는 grade메서드
	public static void grade(int score) throws ArithmeticException{
		// 실제 점수의 범위는 0~100 사이임. 그 외의 점수는 정상적인 입력값이 아니다.
		if(score>=0 && score<=100) {
			System.out.println("정상적인 점수입니다.");
		} else {
			throw new ArithmeticException("점수 입력 오류입니다. 점수: ");
		}	
	}
}

2. 사용자 정의 예외 클래스

- 예외클래스 또한 개발자가 별도로 정의할 수 있다.

- 반드시 Exception이나 Exception계열클래스를 상속받아 정의해야함.

- 해당 [사용자정의예외클래스] 내부의 생성자에 [super클래스]로 예외메시지를 전달하여 초기화 한다.

- 출력값은 [사용자 정의 예외 메시지]를 설정했을 때와 다를 바 없지만 개발자가 보기에 예외명이 더 직관적임.

public class Ex06 {
	public static void main(String[] args) {
		System.out.println("프로그램 시작");
		int score=185;
		try {
			grade(score);
		} catch (Exception e) {
			System.out.println(e.getMessage()+score);
		}
		System.out.println("프로그램 종료");
	}//----------메인메서드----------------

	public static void grade(int score) throws InvalidScoreException{
		if (score>=0&&score<=100) {
			System.out.println("정상적인 점수의 범위입니다.");
		} else {
			throw new InvalidScoreException("점수입력 오류. 점수: ");
		}
	}//----------grade() 메서드 정의부----------------
}//---------Ex06클래스 끝-------------------------------------

class InvalidScoreException extends Exception{
	public InvalidScoreException(String msg){
		super(msg);// 매개변수로 받은 msg를 exception클래스에 전달함. --> 예외메시지를 초기화한다.
	}
}

'개발자 양성과정 필기노트 > JAVA' 카테고리의 다른 글

자바 I/O - 데이터 입/출력 하는 방법  (0) 2021.11.14
멀티쓰레딩  (0) 2021.11.13
데이터 형식화 클래스  (0) 2021.11.13
BigInteger / BigDecimal  (0) 2021.11.13
Enum  (0) 2021.11.13

댓글