C++——异常处理机制

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42994580/article/details/93715494

一. 异常处理概述

       ~~~~~~ 程序中常见的错误分为两类:编译时的错误和运行时的错误,编译的错误主要是语法错误,运行的错误中有些是不可预料的,有些虽然可以预料却无法避免。程序运行过程中的错误统称为异常,对异常的处理称为异常处理。传统的异常处理机制无法保证程序的可靠运行,而且采用判断或分支语句处理异常的方法不适合大量异常的处理,更不能处理不可预知的异常。C++提供的异常处理机制逻辑结果非常清晰,而且在一定程度上可以保证程序的健壮性。

二. 异常处理的方法

       ~~~~~~ C++处理异常的办法是:如果在执行一个函数过程中出现异常,可以不在本函数中立即处理,而是发出一个信息,传给它的上一级(即调用函数)来解决,如果上一级函数也不能处理,再传递给上一级,由上一级处理。如此逐级上传,如果到最高一级还无法处理,运行系统一般会自动调用系统函数 terminate,由它调用 abort 终止程序。
       ~~~~~~ 这样的异常处理方法使得异常的引发和处理机制分离,而不是由同一个函数完成。这样做法的好处是使底层函数(被调用函数)着重用于解决实际任务,而不必过多地考虑对异常的处理,以减轻底层函数的负担,而是把处理异常的任务上移到上层去处理。
       ~~~~~~ C++处理异常的机制由检查,抛出和捕获3个部分组成,分别由3种语句来完成:try(检查),throw(抛出)和 catch(捕获)

1. 异常的抛出

抛出异常常用 throw 语句,其格式如下:

throw 表达式

如果在某段程序中发现了异常,就可以使用 throw 语句抛出这个异常给调用者,该异常由与之匹配的 catch 语句来捕获。

int Div(int x, int y)
{
	if(y == 0)
		throw y;		// 抛出异常,当除数y为0时,语句throw将抛出int型异常
	return x / y;       // 当除数y不为0时,返回x/y的值 
}

2. 异常的检查和捕获

异常的检查和捕获使用 try 语句和 catch 语句,格式如下:

try
{
	被检查的复合语句
}
catch(异常类型声明 1)
{
	进行异常处理的复合语句 1
}
catch(异常类型声明 2)
{
	进行异常处理的复合语句 2
}
.
.
.
catch(异常类型声明 n)
{
	进行异常处理的复合语句 n
}

猜你喜欢

转载自blog.csdn.net/weixin_42994580/article/details/93715494