STL:标准异常类使用、编写自己的异常类

一.标准异常类

这个大哥写的很详细:http://c.biancheng.net/view/2333.html

下面实现一个out_of_range的标准异常类。
案例:实现一个类,异常人的年龄应该在0<age<120之间,否则抛出异常。
注意:

1. 引入对应头文件。
2. 修改类参数。

#include <iostream>
#include <stdexcept>//引入头文件
using namespace std;
class Person {
public:
	Person() {
		this->mAge = 0;
	}
	void setAge(int age) {
		if (age < 0 || age>120) {
			throw out_of_range("你是妖怪吧!");
		}
		else {
			this->mAge = age;
		}
	}
private:
	int mAge;//正常人的年龄!
};
void test01() {
	Person p;
	try{
		p.setAge(150);
	}
	catch (out_of_range e)//或catch (exception e),因为out_of_range是exception子类
	{
		cout << e.what() << endl;
	}
}
int main() {
	test01();
}

结果:
STL:标准异常类使用、编写自己的异常类

二.编写自己的异常类

1.为什么要编写自己的异常类?

  • 标准库中的异常类是有限的。
  • 在自己的异常类中,可以添加自己的信息。(标准库中的异常类值可以设置一个用来描述异常的字符串)。

2.如何编写自己的异常类?

  • 建议自己的异常类要继承标准异常类,因为C++中可以抛出任何类型的异常,所以我们的异常类可以不继承自标准异常,但是这样可能导致程序混乱,尤其是当我们多人协同开发时。
  • 当继承标准异常类时,应该重写父类的what函数和虚析构函数
  • 因为栈展开的过程中,要复制异常类型,那么要根据你在类中添加的成员考虑是否提供自己的复制构造函数。
上一篇:UVA1267 Network 题解(树上贪心)


下一篇:蓝桥杯 基础练习 字母图形