c++异常处理

异常处理简单来说就是处理程序中的错误。

先讲下简单的用法:

我们可以通过以下代码看下异常处理的基本语法

#include<iostream>
using namespace std;

int text(int x, int y) throw(int ,char)//异常接口声明,只允许抛出int,char类型的异常
{
	if(y == 0)
	{
		throw y;//抛出异常
	}
	return x/y;
}

int main()
{
	try//捕获异常
	{
		text(10,0);
	}
	catch(int y)//异常时根据类型匹配
	{
		cout<<"除数为"<<y<<endl;
	}
	return 0;
}

运行结果为

这里有三个关键的函数:

简单来说就是:1.throw是用来抛出异常2.try是去尝试捕获异常3.catch是去处理异常,一个函数里可以有多个catch去处理不同类型的异常,catch(...)的意思是处理所有的异常。

然后我们再看一段代码

int text(int x, int y)
{
	if(y == 0)
	{
		throw y;//抛出异常
	}
	return x/y;
}
int fun(int x,int y)
{
	return text(x,y);
}

int main()
{
	try//捕获异常
	{
		fun(10,0);
	}
	catch(int y)//异常时根据类型匹配
	{
		cout<<"除数为"<<y<<endl;
	}
	return 0;
}

我们用fun函数间接调用text,捕获异常是捕获的fun函数,然后看下结果

所以可以知道异常可以向上抛,直到处理他,如果抛到顶层都没有处理,那么该程序就会崩掉,可以看下图形象的理解

接着我们看一下怎么才能是异常处理更加的灵活

#include<iostream>
#include<string.h>
using namespace std;

class MyException//自己定义一个错误处理类
{
public:
	MyException(char* str)
	{
		error=new char[strlen(str)+1];
		strcpy(error,str);
	}
	void what()
	{
		cout<<error<<endl;
	}
public:
	char* error;
};
int fun()
{
	throw MyException("这是一个错误");//这样可以自定义异常信息
}


int main()
{
	try//捕获异常
	{
		fun();
	}
	catch(MyException y)//处理MyException这个类抛出的异常
	{
		y.what();//因为抛出的是一个对象,我们可以调用他的成员方法
	}
	return 0;
}

让异常抛出一个类,我们可以通过定义自己的类,灵活的处理我们需要效果。

c++也提供了我们标准的异常处理库

一般我们自己写的异常类最好得继承标准库里的类,如exception,头文件为<stdexcept>

当然不同类型的错误可以用不同的标准库

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值