任何东西都可以认为是异常,错误只是异常的一种。本文将带大家了解C++中异常是什么,是如何捕获和处理的等相关知识。文中示例代码简洁易懂,感兴趣的小伙伴可以了解一下
1.C++异常处理的套路
C++异常处理机制之抛出异常关键字:throw
throw关键字的使用:
在哪可能出现异常就在哪里使用throw关键字抛出异常。 这个异常可以使用一个常量,字符串,或类对象,都可以来抛出。 throw + 常量、字符串、数对象 :用表示抛出一个异常。 throw抛出的异常将层层向外抛出,至少有try....catch...语句来捕获这个异常并处理这个异常。 如果最外层的主函数也不进行处理,那么主程序将自动停止。
使用try{ .... } catch(exp ){..} 捕获并处理异常:
try
{
//有可能出现的异常的代码放在try语句块中。
//在try语句块中就可以捕获这个异常。
//如果try语句块中的代码出现异常,即自动跳转到catch语句块进行异常处理。
}catch(被捕获的异常)
{
//catch的语句块里是用来处理异常。
}
代码实例:
#include <iostream>
using namespace std;
int my_add(int a,int b)
{
if(b==0){
throw -1;
}
return a/b;
}
int add(int a,int b)
{
return a+b+my_add(a,b);
}
int main()
{
try {
add(10,0);
} catch (int num) {
if(num==-1){
cout<<"被除数不能为0"<<endl;
}
}
return 0;
}
结果图:
2.C++标准异常库中常用的几个异常处理类
2.1异常类的例子
#include <iostream>
using namespace std;
int my_add(int a,int b)
{
if(b==0){
out_of_range err("被除数不能为0");
throw err;
}
return a/b;
}
int add(int a,int b)
{
return a+b+my_add(a,b);
}
int main()
{
try {
add(10,0);
} catch (out_of_range & err) {
cout<<err.what()<<endl;
}
return 0;
}
2.2封装一个自定义异常类
#include <iostream>
using namespace std;
class Err
{
string err;
public:
Err(string err)
{
this->err=err;
}
string what()
{
cout<<"被除数不能为0"<<endl;
}
};
int my_add(int a,int b)
{
if(b==0){
Err err("被除数不能为0");
throw err;
}
return a/b;
}
int add(int a,int b)
{
return a+b+my_add(a,b);
}
int main()
{
try {
add(10,0);
} catch (Err & err) {
cout<<err.what()<<endl;
}
return 0;
}
到此这篇关于详解C++异常处理机制示例介绍的文章就介绍到这了,更多相关C++异常处理内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:详解C++异常处理机制示例介绍


基础教程推荐
猜你喜欢
- 详解c# Emit技术 2023-03-25
- C++详细实现完整图书管理功能 2023-04-04
- C++中的atoi 函数简介 2023-01-05
- C利用语言实现数据结构之队列 2022-11-22
- C/C++编程中const的使用详解 2023-03-26
- C语言基础全局变量与局部变量教程详解 2022-12-31
- 一文带你了解C++中的字符替换方法 2023-07-20
- C语言 structural body结构体详解用法 2022-12-06
- C++使用easyX库实现三星环绕效果流程详解 2023-06-26
- 如何C++使用模板特化功能 2023-03-05