C++学习笔记之浅谈异常处理

 更新时间:2021年10月20日 15:21:20   作者:彧圆  
C++ 提供了异常机制,让我们能够捕获运行时错误,本文就详细的介绍了C++异常处理入门,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

异常处理主要是针对能通过编译但是运行是在某个特定条件下会出现异常,程序崩溃,结果出错。来进行的东西

C++处理异常的机制是由3个部分组成的,即检查(try)、抛出(throw)和捕捉(catch)。把需要检查的语句放在try块中,throw用来当出现异常时发出一个异常信息,而catch则用来捕捉异常信息,如果捕捉到了异常信息,就处理它。

try {被检查的语句}

catch(异常信息类型 [变量名])

{进行异常处理的语句}

粘一个简单的异常处理的题:

如果三角形满足三角形内角和大于第三边才会有输出,否则进行异常处理。

#include<iostream>
using namespace std;
int main()
{
	double triangler(double a, double b, double c);
	{
		double a, b, c;
		cin >> a >> b >> c;
		try                                //在try块中包含要检查的函数
		{
			while (a > 0 && b > 0 && &c > 0)
			{
				cout << triangler(a, b, c) << endl;	
				cin >> a >> b >> c;
			}
		}
		//catch (double)								//只能抛出对应类型的异常
		//{
		//	{cout << "a=" << a << ",b=" << b << ",c=" << c << ",that is not a triangler!" << endl; }
		//	cout << "end" << endl;
		//}
		catch (...)										//”...“代表可以抛出任何类型的异常
		{
			{cout << "a=" << a << ",b=" << b << ",c=" << c << ",that is not a triangler! it is all typical!" << endl; }
			cout << "end" << endl;
		}
	}
}
double triangler(double a, double b, double c)
{
	double s = (a + b + c) / 2;
	if (a + b <= c || a + c <= b || b + c <= a) throw a;		//抛出异常对象
		return sqrt(s * (s - a) * (s - b) * (s - c));
}

1.在主函数中添加需要检查的语句或者程序段到try语句下;如果运行到try区域出现异常 则会抛出一个throw,然后返回上一级程序。在进行异常处理后,程序并不会自动终止,继续执行catch子句后面的语句。若是没有发现异常,直接跳到catch以后的程序

2.throw抛出的数据类型又人们自己来定义,catch(后的括号有什么数据类型则会检查什么数据类型的错误),如果比较懒的花括号里写三个点(...)代表所有类型

3.try catch结构可以与throw不在一起,甚至不在一个函数里。如果throw出一个异常,throw 会首先在本函数里找try catch函数如果找不到则会采取就近原则。

4.可以单独出现try,但不能单独出现catch

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • c++调用动态库LNK2019和LNK1120无法解析的外部命令

    c++调用动态库LNK2019和LNK1120无法解析的外部命令

    本文主要介绍了c++调用动态库LNK2019和LNK1120无法解析的外部命令, 出现这个错误一般都是函数只找到声明但没有实现,或者是少了什么链接库,下面就来解决一下
    2024-06-06
  • C++运算符重载实例代码详解(调试环境 Visual Studio 2019)

    C++运算符重载实例代码详解(调试环境 Visual Studio 2019)

    这篇文章主要介绍了C++运算符重载实例(调试环境 Visual Studio 2019),本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • VC枚举串口端口应用

    VC枚举串口端口应用

    这篇文章主要介绍了VC枚举串口端口应用,罗列了常见的一些串口端口的应用实例,需要的朋友可以参考下
    2014-10-10
  • C++实现LeetCode(190.颠倒二进制位)

    C++实现LeetCode(190.颠倒二进制位)

    这篇文章主要介绍了C++实现LeetCode(190.颠倒二进制位),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C语言控制台实现打飞机小游戏

    C语言控制台实现打飞机小游戏

    这篇文章主要为大家详细介绍了C语言控制台实现打飞机小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C语言中互斥锁与自旋锁及原子操作使用浅析

    C语言中互斥锁与自旋锁及原子操作使用浅析

    今天不整GO语言,我们来分享一下以前写的C语言代码,来看看互斥锁、自旋锁和原子操作的demo,示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
    2023-01-01
  • C++Lambda表达式详解

    C++Lambda表达式详解

    这篇文章主要介绍了C++中的Lambda表达式详解,本文讲解了基本语法、Lambda的使用等内容,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • c语言中的局部跳转及全局跳转功能

    c语言中的局部跳转及全局跳转功能

    本文介绍了C语言中的goto语句,以及如何使用setjmp和longjmp实现跨函数的跳转,详细讲解了setjmp和longjmp的使用方法和注意事项,以及使用这种全局跳转后变量状态的不确定性,感兴趣的朋友一起看看吧
    2024-09-09
  • C语言树与二叉树基础全刨析

    C语言树与二叉树基础全刨析

    二叉树可以简单理解为对于一个节点来说,最多拥有一个上级节点,同时最多具备左右两个下级节点的数据结构。本文将详细介绍一下C中二叉树与树的概念和结构,需要的可以参考一下
    2022-04-04
  • C++ virtual destructor虚拟析构函数

    C++ virtual destructor虚拟析构函数

    C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放,今天通过本文给大家介绍C++ virtual destructor虚拟析构函数的相关知识,感兴趣的朋友一起看看吧
    2021-05-05

最新评论