C++ Primer 5th笔记(chap 19 特殊工具与技术)异常类层次

C++ Primer 5th笔记(chap 19 特殊工具与技术)异常类层次,第1张

C++ Primer 5th笔记(chap 19 特殊工具与技术)异常类层次

1.

  • 类 exception 、 bad_cast 和 bad_alloc 定 义 了 默 认 构 造 函 数
  • runtime_error 和 logic_error没有默认构造函数, 但是有一个可以接受 C 风格字符串或者标准库 string类型实参的构造函数

1.1 exception 定义的函数

  • 拷贝构造函数
  • 拷贝赋值运算符
  • 一个虚析构函数
  • 一个名为 what 的虚成员。
    what 函数返回一个 const char*,该指针指向一个以null结尾的字符数组, 并且确保不会抛出任何异常

eg.

class out_of_stock:public std::runtime_error
{
public:
	explicit out_of_stock(const std::string &s):std::runtime_error(s){}
};
class isbn_mismatch:public std::logic_error
{
public:
	explicit isbn_mismatch(const std::string &s):std::logic_error(s){}
	isbn_mismatch(const std::string &s,const std::string &rhs,const std::string &lhs): std::logic_error(s),left(lhs),right(rhs){}
	const std::string left,right;
}

1.2 使用我们自己的异常类型

Sales_data& Sales_data::operator+(const Sales_data& rhs)
{
	if(isbn()!=rhs.isbn())
		throw isbn_mismatch("Wrong isbns",isbn(),rhs.isbn());
	units_sold+=rhs.units_sold;
	revenue+=rhs.revenue;
	return *this;
}

Sales_data item1,item2,sum;
while(cin>>item1>>item2)
{
	try{
		sum=item1+item2;
	}
	catch(const isbn_mismatch &e)
	{
		cerr<					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4950814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存