13 장 예외 처리와 C 언어와의 링크 지정

sua·2022년 4월 9일
0

명품 C++ Programming

목록 보기
4/10
post-thumbnail

1. 예제 13-8 : 예외 클래스 만들기

#include <iostream>
#include <string>
using namespace std;

class MyException {
    int lineNo;
    string func, msg;
public:
    MyException(int n, string f, string m) {
        lineNo = n; func = f; msg = m;
    }
    void print() { cout << func << ":" << lineNo << ", " << msg << endl; }
};

class DivideByZeroException : public MyException {
public:
    DivideByZeroException(int lineNo, string func, string msg)
        : MyException(lineNo, func, msg) {}
};

class InvalidInputException : public MyException {
public:
    InvalidInputException(int lineNo, string func, string msg)
        : MyException(lineNo, func, msg) {}
};

int main() {
    int x, y;
    try {
        cout << "나눗셈을 합니다. 두 개의 양의 정수를 입력하세요>>";
        cin >> x >> y;
        if (x < 0 || y < 0)
            throw InvalidInputException(33, "main()", "음수 입력 예외 발생");
        if (y == 0)
            throw DivideByZeroException(35, "main()", "0으로 나누는 예외 발생");
        cout << (double)x / (double)y;
    }
    catch (DivideByZeroException& e) {
        e.print();
    }
    catch (InvalidInputException& e) {
        e.print();
    }
}

[실행 결과]

나눗셈을 합니다. 두 개의 양의 정수를 입력하세요>>2 5
0.4

나눗셈을 합니다. 두 개의 양의 정수를 입력하세요>>200 -3
main():33, 음수 입력 예외 발생

나눗셈을 합니다. 두 개의 양의 정수를 입력하세요>>20 0
main():35, 0으로 나누는 예외 발생

profile
가보자고

0개의 댓글

관련 채용 정보