异常处理中的异常抛出是怎么设计的,一般程序的抛出异常是程序员考虑好之后直接写进代码里吗?
void test()
{
throw 10;
}
void test()
{
throw 10;
}
2017-01-08
可以通过代码检测抛出,举个例子,典型异常捕获除数为零这种情况,可以通过if语句判断是否除数为零,如果为零,则通过throw关键字抛出异常,并通过catch语句去捕捉,给你参照一个小程序:
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
/**
* 定义函数division
* 参数整型dividend、整型divisor
*/
int division(int dividend, int divisor)
{
if (0 == divisor)
{
// 抛出异常,字符串“除数不能为0”
throw string("除数不能为0");
}
else
{
return dividend / divisor;
}
}
int main(void)
{
int d1 = 0;
int d2 = 0;
int r = 0;
cin >> d1;
cin >> d2;
// 使用try...catch...捕获异常
try
{
division(d1, d2);
}
catch (string &)
{
cout << "除数不能为0" << endl;
}
return 0;
}
当你输入为0,0时调用函数时,if语句捕捉到通过throw扔出,catch捕捉异常。所有异常一般而言都是程序员事先规划好的,也可以笼统用catch(...)捕获。
举报