C++异常值 处理

//异常是程序执行期间产生的问题
//异常提供了一中转移程序控制权的方式
//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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一叶孤舟渡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值