ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-06 11:33:27  阅读:143  来源: 互联网

标签:STL age 标准 range 编写 异常 mAge out


一.标准异常类

这个大哥写的很详细: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();
}

结果:
在这里插入图片描述

二.编写自己的异常类

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

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

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

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

标签:STL,age,标准,range,编写,异常,mAge,out
来源: https://blog.csdn.net/weixin_44190648/article/details/122337494

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有