异常类
在之前C++简单的异常处理的例子中,我们抛出并捕获了一个int类型的值。但是我们一般采用异常类。因为异常类相比简单的数据类型可以存储更多信息。C++预定义了多个可创建异常对象的异常类,如下图所示。
在所有的异常类中,exception类是根,定义于头文件
runtime_error类,定义于
logic_error类,定义于头文件
类bad_alloc, bad_cast, bad_typeid, bad_exception描述了C++运算符抛出的异常。bad_alloc异常是new运算符在无法分配内存时抛出的。bad_cast是dynamic_cast运算符在转换引用类型发生错误时抛出的。bad_typeid异常时typeid运算符在运算对象为空指针时抛出的。bad_exception类则描述了从未预料的异常出来程序所抛出的异常。
下面给出抛出runtime_error异常的例子:
#include <iostream>
#include <stdexcept>
using namespace std;
int quotient(int a, int b) {
if (b == 0) {
throw runtime_error("整数不能除零!");
}
return a/b;
}
int main()
{
cout << "输入两个数:" << endl;
int a, b;
cin >> a >> b;
try{
cout << a << "/" << b << "=" << quotient(a,b) << endl;
} catch (runtime_error& e){
cout << e.what() << endl;
}
return 0;
}
输入4和0
再给出一个处理bad_alloc异常的例子:
#include <iostream>
using namespace std;
int main()
{
try{
for(int i = 1; i <= 100; i++){
new int[100000000];
cout << i << "个数组被创建了!" << endl;
}
}catch(bad_alloc& e){
cout << "发生异常:" << e.what() << endl;
}
return 0;
}
运行结果:
原文链接: https://www.cnblogs.com/bwjblogs/p/12817408.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/196801
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!