#include <iostream> #include <iomanip> using namespace std; int main(){ double m,n; cin >> m >> n; try { if( n == 0) throw 0; //除数为0,抛出int类型异常 else if(int(m/n)*n!=m) throw 1.0*m/n; //不能整数,抛出double异常 else //完善捕获其他错误 if(int(m/n)*n==m) throw(m/n); } //完善cathch语句,合理使用异常参数 catch (int) { cout<<"catch(int):0"<<endl; cout<<"can not divided by zero!"<<endl; } catch (...) { if(int(m/n)*n!=m) { cout<<"catch(double):"<<fixed<<setprecision(2)<<(1.0*m/n)<<endl; cout<<"int(m/n)*n!=m."<<endl; } else if(int(m/n)*n==m) { cout<<"catch(other):"<<m/n<<endl; cout<<"you got it!"<<endl; } } return 0; }
时间: 2024-04-01 21:32:16 浏览: 44
#include <iostream>
这段代码是一个对除数为0和整数除法的判断的程序。用户输入两个数m和n,程序会判断n是否为0,如果是则抛出一个int类型的异常,提示用户不能除以0。如果n不为0,则判断m/n是否为整数,如果不是,则抛出一个double类型的异常,提示用户m不能被n整除。如果m/n为整数,则程序抛出一个未知类型的异常,提示用户计算正确。
catch语句中使用了参数,可以根据不同类型的异常抛出不同的信息。如果抛出了int类型的异常,则输出抛出异常的类型和信息;如果抛出double类型的异常,则输出抛出异常的类型和信息;如果抛出了其他类型的异常,则输出计算结果和提示信息。
阅读全文