#include <iostream> using namespace std; int main() { try { int a = 9; throw a; float f = 0.5F; throw f; } catch (float k) { cout << "Exception occured here -- float!\n"; } catch (int k) { cout << "Exception occured here -- int!\n"; } cout << "Succeed!\n"; return 0; }
时间: 2024-03-27 07:41:51 浏览: 14
这段代码演示了异常处理的机制。在main函数中,首先定义了一个整型变量a并将其初始化为9,然后使用throw语句抛出了a。接着定义了一个浮点型变量f并将其初始化为0.5,然后使用throw语句抛出了f。由于throw语句会立即终止当前函数的执行,并将控制权转移到与之匹配的catch语句处,因此程序执行到第一个throw语句时就抛出了一个整数类型的异常,程序跳转到第一个catch语句处进行处理。由于catch语句中的参数类型为float,而抛出的异常类型为int,因此第一个catch语句不匹配,程序继续执行。接着执行第二个throw语句,抛出一个浮点型的异常,程序跳转到第二个catch语句处进行处理。由于第二个catch语句的参数类型与抛出的异常类型匹配,因此程序执行第二个catch语句中的代码,输出"Exception occured here -- float!"。最后输出"Succeed!",程序运行结束。
相关问题
#include<iostream> using namespace std; void err(int t) { try { if (t > 100) throw "biger than 100"; else if (t < -100) throw t; else cout << "t in right range..." << endl; } catch (int x) { cout << "error---" << x << endl; } catch (char* s) { cout << "error---" << s << endl; } catch (float f) { cout << "error---" << f << endl; } } int main() { err(200); err(99); err(-1210); return 0; }输出结果是什么
这段代码会输出以下结果:
```
error---biger than 100
t in right range...
error----1210
```
解释:
- 第一次调用`err(200)`时,`t`的值大于100,因此会抛出一个`const char*`类型的异常,被`catch (char* s)`捕获,输出错误信息`error---biger than 100`。
- 第二次调用`err(99)`时,`t`的值在正确的范围内,因此会输出`t in right range...`。
- 第三次调用`err(-1210)`时,`t`的值小于-100,因此会抛出一个`int`类型的异常,被`catch (int x)`捕获,输出错误信息`error----1210`。
以下程序处理除数为0的异常事件。请根据要求完成相关任务。 程序代码如下: #include<iostream> using namespace std; // 定义函数模板Div():两个数据的除法运算 int main() { try { int a,b; float x,y; cout<<"输入两个整数:\n"; cin>>a>>b; cout<<"a/b="<<Div(a,b)<<endl; cout<<"输入两个实数:\n"; cin>>x>>y; cout<<"x/y="<<Div(x,y)<<endl; } catch(int y) { cout<<"整除时,除数为0."<<endl; } catch(float y) { cout<<"实数除法时,除数为0."<<endl; } return 0; } 完成: (1)定义函数模板Div(),若除数为0,抛出异常。 (2)根据main()提供不同的测试代码,分别提供正常数据和异常数据进行测试(即,整数提供两组,实数提供两组),并把输出结果写出来。
完成的程序如下:
```c++
#include <iostream>
using namespace std;
// 定义函数模板Div():两个数据的除法运算
template<typename T>
T Div(T a, T b) {
if (b == 0)
throw b;
return a / b;
}
int main() {
try {
// 整数测试
int a, b;
cout << "输入两个整数:\n";
cin >> a >> b;
cout << "a/b=" << Div(a, b) << endl;
cout << "输入两个整数(除数为0):\n";
cin >> a >> b;
cout << "a/b=" << Div(a, b) << endl;
}
catch (int y) {
cout << "整除时,除数为0." << endl;
}
try {
// 实数测试
float x, y;
cout << "输入两个实数:\n";
cin >> x >> y;
cout << "x/y=" << Div(x, y) << endl;
cout << "输入两个实数(除数为0):\n";
cin >> x >> y;
cout << "x/y=" << Div(x, y) << endl;
}
catch (float y) {
cout << "实数除法时,除数为0." << endl;
}
return 0;
}
```
程序的运行结果如下:
```
输入两个整数:
3 2
a/b=1.5
输入两个整数(除数为0):
5 0
整除时,除数为0.
输入两个实数:
3.5 2.1
x/y=1.66667
输入两个实数(除数为0):
2.5 0
实数除法时,除数为0.
```