用异常处理错误信息--继承在异常中的应用

4 篇文章 0 订阅

用异常处理错误信息–继承在异常中的应用

思路:

定义一个异常基类,定义两个派生出来的两个异常类,然后在发生异常时抛回一个异常类的对象,再在catch中用父类对象引用来接,再用父类引用对象调用异常类中what函数(此处发生了多态)

代码:

#define  _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

class BaseMyException {
public:
	virtual void what() = 0;  //打印错误信息的 纯虚函数
	virtual ~BaseMyException(){}
};

class TargetSpaceNullException :public BaseMyException {
public:
	virtual void what() {
		cout << "目标空间为空" << endl;
	}
	virtual ~TargetSpaceNullException() {}
};
class SourceSpaceNullException :public BaseMyException {
public:
	virtual void what() {
		cout << "源空间为空" << endl;
	}
	virtual ~SourceSpaceNullException() {}
};
void copy(char* target, char* source) {
	if (target == NULL) {
		throw TargetSpaceNullException();   //调用了无参构造
	}
	if (source == NULL) {
		throw SourceSpaceNullException();  //调用了无参构造
	}
	while (*source != '\0') {
		*target = *source;
		target++;
		source++;

		*target = '\0';    //注意不要忘了给复制后的字符串数组加上结束符
	}
}

int main() {
	char buf[] = "jakefuck";
	char aim[1024] = {0};   //如果不初始化为0,那么如果没有复制成功,那么在最下面输出aim时会乱码!

	try {
		copy(aim, buf);
	}
	catch (BaseMyException& tp) { //此处采用的是捕获引用法 而且捕获的是父类引用,以发生多态
		tp.what();
	}

	cout << aim << endl;

	system("pause");
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值