Web Development/Java

예외 처리 - throws 구문

seongduck 2022. 10. 11. 23:05
  • 예외처리 throws 구문
  • 강제로 예외처리 발생시키기

1. throws란?

  • 아래 메소에서 상위 메소드로 Exception처리를 던지는 경우
  • 여러 개의 작업을 모아서 예외 처리를 해야 하는 경우
    • 계좌이체(출금 & 입금)에서 둘다 완벽히 작업이 완료되어야 계좌이체가 됐다고 한다.
    • 이때 출금에선 정상적으로 발생했지만 입금에서 Exception에 발생했을 때 계좌이체의 상위로 올려보내 예외처리를 실행한다.
  • 어떻게 처리해야할지 모를 때 위로 보내는 경우
public Return_Type 메소드명(파라미터...){
	throws Exception_Type1, Exception_Type2,..{
		//메소드 내용
	}
}

2. 강제로 Exception 발생시키기

  • 조건문 등을 이용하여 예외 상황을 발생할 수 있다.
//문법
throw new Excepton("Exception 발생 메시지");
throw Exception_객체;
//예제
Exception exception = new Exception();
throw exception;
throw new Exception("예외 발생!!!");

 

2-1 예제

package chapter12;

public class ThrowExceptionEx {
	public static void main(String[] args) {
		
		int age = 16;
		
		try {
			if(age < 19) {
				throw new Exception("19세 미만은 입장 불가!!");
			} else {
				System.out.println("입장하세요~");
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}
}
  • throw new Exception을 통해 원하는 메시지를 입력하여 e.getMessage()를 통해 호출할 수 있다.
  • 굳이 필요한 예외처리는 아니지만 발생이 필요한 경우 이렇게 호출할 수 있다.
//출력 결과
19세 미만은 입장 불가!!

3. 실습

  • 19세 이상 관람가의 영화를 상영하는 영화관에 입장하려고한다.
  • 19세 미만인 사람들에게 강제 Exception을 발생해보자.

 

  • Person Class
package chapter12;

public class Person {

	private String name;
	private int age;
	
	
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	
}

 

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

public class TheaterEntranceTest {

	public static void main(String[] args) {
		
		ArrayList<Person> people = new ArrayList<>();
		
		people.add(new Person("홍길동",23));
		people.add(new Person("홍길순",17));
		
		System.out.println("영화관에 입장합니다!");
		for(Person person : people) {
			System.out.print(person.getName() + " 님 : ");
			try{
				if(person.getAge() < 19) {
					throw new Exception("입장 불가합니다!!");
				} else {
					System.out.println("입장하세요~");
				}
			} catch(Exception e) {
				System.out.println(e.getMessage());
			}
		}
	}
}
//출력 결과
영화관에 입장합니다!
홍길동 님 : 입장하세요~
홍길순 님 : 입장 불가합니다!!

 

3-1 실습

  • 점수가 70점 미만인 과목은 Exception을 강제로 발생시킨다.
  • 과목의 정보는 ArrayList를 이용하여 관리한다.

 

  • student 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 Exception(subject.getName() + " (" + 
							subject.getScore() + "점)");
				}
			} catch(Exception e) {
				System.out.println(e.getMessage());
			}
		}
	}
}
//출력 결과
나머지 공부를 해야하는 과목은?
지리 (65점)
생물 (58점)

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

예외 처리 - 사용자 정의 예외  (0) 2022.10.11
예외처리 try ~ catch ~ finally 구문  (0) 2022.10.11
HashMap  (0) 2022.10.08
List Collection  (0) 2022.10.08