Java 35(예외전달 프로그램[계산])

Kang.__.Mingu·2024년 5월 12일
0

Java

목록 보기
37/108
package exception;

import java.util.InputMismatchException;
import java.util.Scanner;

// 키보드로 정수값 2개를 입력받아 첫번째 정수값에서 
// 두번째 정수값을 나눈 몫을 계산하여 출력하는 프로그램
public class CalcuateExceptionApp {

    // public CalcuateExceptionApp() throws InputMismatchException,ArithmeticException {
    // CalcuateExceptionApp() 생성자
    public CalcuateExceptionApp() throws Exception {// 메소드에서 발생되는 모든 예외 전달
        Scanner sc = new Scanner(System.in);
        System.out.print("첫번째 정수값 입력 >> ");
        // Scanner.nextInt(): 입력값을 얻어와 정수값으로 변환하여 반환하는 메소드
        // => 입력값을 정수값으로 변환할 수 없는 경우 InputMismatchException 발생
        // 예외처리하지 않고 예외 전달
        int num1 = sc.nextInt();
        
        // 어떤수를 [0]으로 나눈 경우 ArithmeticException 발생
        System.out.print("두번째 정수값 입력 >> ");
        int num2 = sc.nextInt();

        System.out.println("[결과] " + num1 + " / " +  num2 + " = " + (num1 / num2));

        sc.close();
    }

    public static void main(String[] args) {
/*
        try {
            // new 연산자로 클래스의 생성자를 호출하여 객체 생성 - 생성자의 명령 실행
            // => 생성자에서 전달된 예외에 대한 예외처리
            new CalcuateExceptionApp();
        } catch (InputMismatchException e) {
            System.out.println("[에러] 형식에 맞는 값을 입력해주세요.");
        } catch (ArithmeticException e) {
            System.out.println("[에러] 0으로 나눌 수 없습니다.");
        } catch (Exception e) { // 모든 예외를 전달받아 예외처리
            System.out.println("[에러] 예기치 못한 예외가 발생했습니다.");
        }
*/
        // catch 블럭에서 예외클래스를 | 연산자로 연결하여 다수의 예외클래스의 
        // 객체를 전달받아 예외처리 가능
        try {
            new CalcuateExceptionApp();  // 객체
        } catch (InputMismatchException | ArithmeticException e) { 
        	// 다수의 예외에 대한 예외처리 가능
            // InputMismatchException: Scanner에서 입력값이 지정한 타입과 다를 경우
            // ArithmeticException: 0으로 나눴을 때 발생하는 예외
            System.out.println("[에러] 형식에 맞는 값을 입력해주세요.");
        } catch (Exception e) { // 모든 예외를 전달받아 예외처리
            System.out.println("[에러] 예기치 못한 예외가 발생했습니다.");
        }
    }
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글