Web Development/Java

예외 처리 - 사용자 정의 예외

seongduck 2022. 10. 11. 23:05
  • 예외 처리 - 사용자 정의 예외

1. 사용자 정의 예외 클래스?

  • 기존에 정의된 예외 클래스를 상속받아 새로운 예외 클래스를 정의한다.
  • Checked Exception : Exception 클래스를 상속받아 정의
  • Unchecked Exception : RuntimeExeption 클래스를 상속받아 정의
  • 사용자 정의 예외 클래스 이름은 Exception으로 끝나는 것이 좋다.
  • 사용자 정의 예외 클래스는 필드, 생성자, 메소드를 포함할 수 있으나 대부분 생성자만을 포함한다.
    • 기본 생성자 & String 타입의 매개변수를 갖는 생성자
    • String 타입의 매개 변수에 예외 발생 원인을 알려주는 메시지를 담아 전달한다.

2. 실습

  • 점수가 70점 미만인 과목은 Exception을 강제로 발생시켜보자.
  • 나머지 공부에 대한 사용자 정의 예외 클래스를 이용하여 예외를 처리한다.
  • 과목의 정보는 ArrayList를 이용하여 관리한다.

 

  • Subject Class
package chapter12;

public class Subject {
	
	private String name;
	private int score;
	
	public Subject(String name, int score) {
		super();
		this.name = name;
		this.score = score;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getScore() {
		return score;
	}
	public void setScore(int score) {
		this.score = score;
	}
	
	
}

 

  • ExamFailTest Class
package chapter12;
import java.util.ArrayList;

public class ExamFailTest {

	public static void main(String[] args) {
		
		ArrayList<Subject> subjectList = new ArrayList<Subject>();
		
		subjectList.add(new Subject("역사", 86));
		subjectList.add(new Subject("지리", 65));
		subjectList.add(new Subject("생물", 58));
		subjectList.add(new Subject("물리", 76));
		
		System.out.println("나머지 공부를 해야하는 과목은?");
		
		for(Subject subject : subjectList) {
			try {
				if(subject.getScore() < 70) {
					throw new ExamFailException(subject.getName() + " (" + 
							subject.getScore() + "점)");
				}
			} catch(ExamFailException e) {
				System.out.println(e.getMessage());
			}
		}
	}
}

 

  • ExamFailException Class
package chapter12;

public class ExamFailException extends Exception {

	public ExamFailException() {
		
	}
	
	public ExamFailException(String message) {
		
		super(message);
	}

}
  • 사용자 정의 예외 처리 함수는 Exception을 상속받아서 사용한다.

'Web Development > Java' 카테고리의 다른 글

예외 처리 - throws 구문  (0) 2022.10.11
예외처리 try ~ catch ~ finally 구문  (0) 2022.10.11
HashMap  (0) 2022.10.08
List Collection  (0) 2022.10.08