코딩배움일지/JAVA

Java 16일차 4(예외처리)

karatejin 2022. 12. 1. 12:54
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class CustomExceptionMain {
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		
		String username = null;
		String password = null;
		
		System.out.print("아이디: ");
		username = scanner.nextLine();
		System.out.print("비번: ");
		password = scanner.nextLine();	
		
		try{
			if (username.isBlank() && password.isBlank()) {
				Map<String, String> errorMap = new HashMap<>();
				errorMap.put("username", "아이디를 입력하세요.");
				errorMap.put("password", "비번를 입력하세요.");
				throw new CustomException("유효성 검사 실패", errorMap);			
			
			}else if(password.isBlank()) {
				Map<String, String> errorMap = new HashMap<>();
				errorMap.put("password", "비번를 입력하세요.");
			}else if(username.isBlank()) {
				Map<String, String> errorMap = new HashMap<>();
				errorMap.put("username", "아이디를 입력하세요.");
			
			}
			System.out.println("회원 등록 진행");
			
		} catch (CustomException e) {
			e.printStackTrace();
			System.out.println("내가만든 예외 처리함!!!");			
			try {
				e.printErrorMap(); /*java.lang.NullPointerException*/
			} catch (NullPointerException e2) {
				e2.printStackTrace();
			}
		}
		System.out.println("프로그램 종료");
		
	}

}

 

 

import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;

public class CustomException extends RuntimeException {

	private static final long serialVersionUID = 1L; /* 직렬화 */

	Map<String, String> errorMap;

	public CustomException() { /*오버로드*/ /*아무것도 없을때*/
		super();
	}
	
	public CustomException(String message) { /*오버로드*/ /*메세지만 있을때.*/
		super(message);
	}
	
	public CustomException(Map<String,String> errorMap) { /*오버로드*/ /*errorMap 만 있을때*/
		super();
		this.errorMap = errorMap;
	}
	
	public CustomException(String message,Map<String,String> errorMap) {
		super(message);
		this.errorMap = errorMap;
	}
	
	public void printErrorMap() {
			
		Objects.requireNonNull(errorMap); /*만약에 errorMap이 Null인 경우 NullpointException를 날려준다.*/
		for(Entry<String, String> entry : errorMap.entrySet()) {
			System.out.println(entry.getKey() + ">>>" + entry.getValue());
		}
		System.out.println();
	}

}

출력

아이디: asdf
비번: 123
회원 등록 진행
프로그램 종료

//		try{
//			throw new CustomException("내가 만든 예외"); /*예외*/
//			
//		} catch (CustomException e) {
//			e.printStackTrace();
//			System.out.println("내가만든 예외 처리함!!!");			
//			try {
//				e.printErrorMap(); /*java.lang.NullPointerException*/
//			} catch (NullPointerException e2) {
//				e2.printStackTrace();
//			}
//		}
//		System.out.println("프로그램 종료");