详解C++异常处理使用方法

您所在的位置:网站首页 运行时异常是指难以恢复 详解C++异常处理使用方法

详解C++异常处理使用方法

2023-09-07 09:12| 来源: 网络整理| 查看: 265

C++异常捕获与处理 1.异常处理1.1什么是异常处理1.2抛出异常1.3异常处理 2.C++实现异常处理的3个关键字2.1 throw、try、catch2.2寻找处理代码的过程(匹配catch的过程) 3.C++定义的标准异常类3.1使用C++的标准异常类实例 4.如何定义和使用自己的异常类5.总结

1.异常处理 1.1什么是异常处理

异常是指再程序正常运行的过程中的发生的反常行为,比如说遇到意外的用户输入情况。

1.2抛出异常

当程序的某部分监测到一个它无法处理的问题时,它首先应该发出某种信号,以表明它遇到了无法解决的问题,并且它只负责报告异常,至于程序会如何处理,不是它的任务。

1.3异常处理

一般而言,如果程序中有监测异常的代码,通常就会有处理异常的代码。比如说引发程序异常的问题是输入无效,那么处理异常的代码就可以是提示用户重新输入真确的数据。

2.C++实现异常处理的3个关键字 2.1 throw、try、catch 用“throw表达式”来抛出异常,用法是“throw + 表达式 ;”。如: throw “the input is error.”;//抛出const char* 的异常类型throw 1;//抛出int型的异常类型throw runtime_error(“Data must refer to ISBN”); //抛出runtime_error类类型的异常类型,其中runtime_error是一个标准的异常处理类 用“try语句块”来处理异常 在这里插入图片描述 try语句块中的program-statements放置正常运行的程序,同时它也是可能出问题的程序。一旦有异常发生,就用throw表达式来抛出异常。这里注意,try中声明的变量在外部无法访问,catch也不行。catch的语句块(handler-statements)就是放置异常处理代码的地方。这里提个问题:catch是怎样匹配throw抛出的异常的呢?答案就是catch通过括号()中的异常声明(exception-declaration)来匹配。当throw抛出的是int型的异常类型,则用int声明一个变量来匹配。如下:当你输入一个 cerr cin >> a; if (a getInput(); } catch (int i){ cerr if (_b == 0) throw "输入的分母是0。"; //抛出const char* 类型的异常 return _a / _b; } int main() { double numerator, denominator;//numerator:分子。denominator:分母 while (cin >> numerator >> denominator){//用户输入分子分母 try{ double quotient = calQuotient(numerator, denominator);//calQuotient()函数是计算商的函数 std::cout //bad_alloc异常类实例 try { char * p = new char[0x7fffffff]; //无法分配这么多空间,会抛出异常 } catch (bad_alloc e) { cerr cerr } MyException(const char* _c):c(_c){} virtual ~MyException(){} //覆写what成员函数 const char* what() throw() { if (c == nullptr) return "MyException() error catch!"; return c; } private: const char * c; }; int main() { //默认参数-构造一个MyException类 try{ throw MyException(); } catch (MyException & myexp){ cerr cerr


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3