关于#C++异常处理#的问题,如何解决?


#include<iostream>
using namespace std;

void division(int apples, int children){
    int per_child;
    int rest;
    //除零错误异常消息字符串 
    string divid0 = "";
    //小朋友数多于苹果数的异常消息整数
    int notenough = 1; 
    if(children == 0){
        throw divid0;
    }
    else if(apples < children){
        throw notenough;
    }
    per_child = apples / children;
    rest = apples % children;
    cout << "每个小朋友分:" << per_child << "个苹果。" << endl;
    cout << "还剩:" << rest <<"个苹果。" << endl; 
}
int main() {
    int apples, children;
    cin >> apples;
    cin >> children;
    //添加异常处理过程try块,让程序圆满执行不崩溃。
    //如果小朋友为0,则输出  小朋友一个没来,不能分苹果。并回车
    //如果小朋友数大于苹果数,则输出  不够分。并回车
    //如果正常够分,则在调用division函数后,输出  成功完成了一次分苹果活动。
    division(apples, children);
    
    
    
    return 0;
}

测试输入:
10
3

预期输出:
每个小朋友分:3个苹果。
还剩:1个苹果。
成功完成了一次分苹果活动。

测试输入:
10
0

预期输出:
小朋友一个没来,不能分苹果。

参考如下:

 
#include<iostream>
using namespace std;
 
void division(int apples, int children){
    int per_child;
    int rest;
    //除零错误异常消息字符串 
    string divid0 = "";
    //小朋友数多于苹果数的异常消息整数
    int notenough = 1; 
    if(children == 0){
        throw divid0;
    }
    else if(apples < children){
        throw notenough;
    }
    per_child = apples / children;
    rest = apples % children;
    cout << "每个小朋友分:" << per_child << "个苹果。" << endl;
    cout << "还剩:" << rest <<"个苹果。" << endl; 
}
int main() {
    int apples, children;
    cin >> apples;
    cin >> children;
    //添加异常处理过程try块,让程序圆满执行不崩溃。
    //如果小朋友为0,则输出  小朋友一个没来,不能分苹果。并回车
    //如果小朋友数大于苹果数,则输出  不够分。并回车
    //如果正常够分,则在调用division函数后,输出  成功完成了一次分苹果活动。
    try {
        division(apples, children);
    } catch (int e1) {
        cout << "不够分。" << endl;
    } catch (string e2) {
        cout << "小朋友一个没来,不能分苹果。" << endl;
    }
    
    return 0;
}