//异常是程序执行期间产生的问题
//异常提供了一中转移程序控制权的方式
//try,catch,throw
//throw:抛出异常
//catch捕获异常
//try:try块中的代码标识将被激活的特定异常
//try块中放置可能抛出异常的代码,称为保护代码。
//不同情境下会抛出不同的异常,这时候可以罗列多个catch语句,用于捕获不同类型的异常
//throw语句的操作数可以是任意表达式,表达式的结果的类型决定了抛出的异常的类型
//throw抛出异常,try、catch捕获异常并做出反映
//eg:抛出一个除以零的异常,并在catch中捕获该异常
//#include<iostream>
//using namespace std;
//
//double division(int a, int b);
//
//int main()
//{
// int x = 50;
// int y = 0;
// double z = 0;
//
// //异常捕获
// try {
// z = division(x, y);
// cout << z << endl;
// }
// catch (const char * msg) {
// cerr << msg << endl;
// }
// cin.get();
// return 0;
//}
//
//double division(int a, int b)
//{
// //零不能做除数
// if (b == 0) {
// throw"Division by zro condition!";
// }
// return(a / b);
//}
//分析:throw抛出的是一个类型为const char*的异常,因此捕获异常时,必须在catch块中使用const char*。
//如何定义新的异常
#include<iostream>
#include<exception>
using namespace std;
//继承自类exception
struct MyException : public exception
{
const char * what()const throw()
//const throw()表示异常规格说明
//what()里面放置要抛出的异常数据类型
//异常规格说明是为了让函数使用者知道该函数可能抛出的异常有哪些
//若没有异常接口声明,则此函数可以抛出任何类型的异常。
{
return"C++ Exception";
}
};
int main()
{
try {
throw MyException();
}
catch (MyException& e)
{
cout << "MyException caught" << endl;
cout << e.what() << endl;
}
catch (exception& e)
{
//其他错误
}
cin.get();
return 0;
}
C++异常值 处理
最新推荐文章于 2023-11-16 22:38:15 发布