- 예외처리 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 |