throw catch try

C++学的太少,一天连发三篇日志,记录C++学习的基础知识。今天师兄让我使用catch try处理程序的异常,但是不会,有点丢人,只能慢慢学习了。

throw就是抛出异常,通常会有条件,如果某个条件出现了,那么throw,抛出异常,throw后面是某一类的对象。

try里面是极有可能出现异常的代码,如果满足了触发throw的条件,就会throw,然后catch就是紧着着处理这个异常,通常catch后紧接着某一类。

#include<iostream>                                 //包含头文件
#include<stdlib.h>
using namespace std;
double fuc(double x, double y)                        //定义函数
{
	if(y==0)
	{
    throw y;                                    //除数为0,抛出异常
	}
 return x/y;                                    //否则返回两个数的商
}
void main()
{
	double res;
	try                                            //定义异常
		{
			res=fuc(4,0);
			res=fuc(2,3);
			cout<<"The result of x/y is : "<<res<<endl;
			                               //出现异常
		}
	catch(double)                                    //捕获并处理异常
		{
	           cerr<<"error of dividing zero.\n";
			   exit(1);                                    //异常退出程序
		}
}

上面的程序,当除数为0时,会触发异常处理,那么结果如下图所示:

可以看到,输出结果是一段字符串,有点像跳转语句。后面的fun(2,3)也没有执行。

#include <iostream>
using namespace std;
class ExceptionClass
{
	char* name;
public:
	ExceptionClass( char* name="default name") 
	{
		cout<<"Construct "<<name<<endl;
		this->name = name;
	}
	~ExceptionClass()
	{
		cout<<"Destruct "<<name<<endl;
	}
	void mythrow()
	{
		//这里才是真正的throw,抛出一个对象。
		throw ExceptionClass("my throw"); 
	}
};

void main()
{
	ExceptionClass e("Test");
	try
	{
		e.mythrow();
	}  
	catch(...)//其它错误异常
	{
		cout<<"*********"<<endl;
	}
}

catch(...)是为了防止某些想不到的异常,catch 后面紧跟着是类的名称,即使声明了某一对象,也不会分配空间。直接上结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值