Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 개발자
- 코딩
- 가위바위보프로그램
- 독학
- userDefineException
- 백앤드
- exception
- for문
- 프로그래머스
- 예외던지기
- 자바
- 클래스의구조
- super 생성자
- Java
- 추상화
- AoutoBoxing
- 캐스팅연산자
- Calendar Class
- 부모 생성자
- 상속
- 국비지원
- do~while문
- 예외처리
- 취준생
- 비전공자
- Date Class
- 생성자
- 알고리즘
- 개발
- 사용자 정의 예외처리
Archives
- Today
- Total
유난스런 개발 기록
[JAVA] Day-17 _ 사용자 정의 예외처리 (User Define Exception) 본문
day-17
용자 정의 예외처리 (User Define Exception)
사용자 정의 예외처리 (User Define Exception) 이란 ?
- 단어의 의미 그대로 사용자 즉, 개발자가 직접 예외처리를 해주는 것이다.
- Exception 클래스를 상속 받아야 한다.
- 파라미터가 없는 기본 생성자 + 예외 메시지를 전달하기 위한 파라미터(String 타입)가 있는 생성자
- 두 개의 생성자를 선언하는 것이 일반적이다.
JangolackException extends Exception
package my.day17.c.userDefineException;
//== 사용자(개발자)가 정의하는 예외(익셉션)절 클래스 만들기 == //
/*
1. Exception 클래스를 상속받아야 한다.
2. 생성자내에서 예외메시지(오류메시지)를 등록해주면 끝난다.
*/
public class JangolackException extends Exception {
// 기본생성자
public JangolackException() {
super(">> 잔고량이 주문량 보다 부족하므로 주문이 불가능합니다. <<");
}
// 파라미터가 있는 생성자
public JangolackException(String errMsg) {
super(errMsg);
}
}
해당 클래스는 직접 예외처리를 정의해준 것이다.
extends Exception 을 통해 상속을 받았다는 것을 확인할 수 있다.
또한 기본 생성자에서 super 를 이용하여 부모 클래스의 생성자를 호출해 오류 메시지를 지정해주었고,
파라미터가 있는 생성자는 해당 메시지를 전달해주는 역할을 한다.
Product
public class Product {
// field
private String prodName; // 제품명 ("새우깡", "감자깡", "양파링")
private int jango; // 잔고 ( 100 , 50 , 150 )
// method
public String getProdName() {
return prodName;
}
public void setProdName(String prodName) {
this.prodName = prodName;
}
public int getJango() {
return jango;
}
public void setJango(int jango) {
this.jango = jango;
}
// 제품의 정보를 보여주는 메소드 생성
public void info() {
String info = "1. 제품명 : " + prodName + "\n"
+ "2. 잔고량 : " + jango + "개\n";
System.out.println(info);
}
// 주문을 받는 메소드 생성 1
public void order(int jumunSu) throws JangolackException {
// order(int jumunSu) 은 파라미터로 들어오는 jumunSu 의 값에 따라서
// 사용자(개발자)가 만든 JangolackException 익셉션을 유발 할 수 있다는 말이다.
if(jango < jumunSu) {
// 잔고량이 주문량 보다 부족할 시 JangolackException 익셉션을 유발 시켜야 한다.
throw new JangolackException();
}
else {
jango -= jumunSu;
System.out.println(prodName + " 제품을 " + jumunSu + "개 주문하셨습니다.");
}
}// end of public void order(int jumunSu) throws JangolackException----------
// 주문을 받는 메소드 생성 2
public void jumun(int jumunSu) throws JangolackException {
// order(int jumunSu) 은 파라미터로 들어오는 jumunSu 의 값에 따라서
// 사용자(개발자)가 만든 JangolackException 익셉션을 유발 할 수 있다는 말이다.
if(jango < jumunSu) {
// 잔고량이 주문량 보다 부족할 시 JangolackException 익셉션을 유발 시켜야 한다.
throw new JangolackException(">> "+ prodName + "잔고가 " + jango + "개 인데 주문량이 " + jumunSu + "개라서 잔고 부족으로 주문이 불가능합니다.");
}
else {
jango -= jumunSu;
System.out.println(prodName + " 제품을 " + jumunSu + "개 주문하셨습니다.");
}
}// end of public void jumun(int jumunSu) throws JangolackException ---------
}
Main
public class Main {
public static void main(String[] args) {
Product[] prodArr = new Product[3];
prodArr[0] = new Product();
prodArr[0].setProdName("새우깡");
prodArr[0].setJango(100);
prodArr[1] = new Product();
prodArr[1].setProdName("감자깡");
prodArr[1].setJango(50);
prodArr[2] = new Product();
prodArr[2].setProdName("양파링");
prodArr[2].setJango(150);
for(Product prod : prodArr) {
try {
prod.order(80); // 80개 주문
} catch (JangolackException e) {
// e.printStackTrace();
System.out.println("오류메시지 : " + e.getMessage() + "\n");
} finally {
prod.info();
}
}// end of for--------------------
System.out.println("\n------------------------------------\n");
prodArr[0].setJango(100);
prodArr[1].setJango(50);
prodArr[2].setJango(150);
for(Product prod : prodArr) {
try {
prod.jumun(80); // 80개 주문
} catch (JangolackException e) {
// e.printStackTrace();
System.out.println("오류메시지 : " + e.getMessage() + "\n");
} finally {
prod.info();
}
}// end of for--------------------
}
}
'개념정리 > JAVA' 카테고리의 다른 글
[JAVA] Day-17 _ 예외 던지기 (Exception Throws) (0) | 2023.02.07 |
---|---|
[JAVA] Day-17 _ 예외처리 (Exception) (0) | 2023.02.06 |
[JAVA] Day-16 _ 인터페이스 (interface) (0) | 2023.02.06 |
[JAVA] Day-16 _ final 키워드 (0) | 2023.02.06 |
[JAVA] Day-16 _ 접근 제어자 (access modifier) (0) | 2023.02.06 |