快速了解 c++ 异常处理 基础知识

devtools/2025/2/9 2:40:38/

相关代码概览:

#include<stdexcept>std::runtime_errorcatch (const std::runtime_error& e) e.what() 

相信大家一定见过这些代码,那么这些代码具体什么意思呢?我们一起来看一下 

知识精讲:

异常处理是C++中非常重要的一部分,用于在程序运行过程中处理运行时错误。你提到的这些代码片段和概念与异常处理紧密相关。下面我会逐一解释它们的含义:

  1. #include<stdexcept>:这是一个预处理指令,用于包含标准异常类的头文件。stdexcept头文件定义了几个标准的异常类,比如std::runtime_error

  2. std::runtime_error:这是stdexcept头文件中定义的一个异常类,用于表示在程序运行时发生的错误。当你想要抛出一个表示运行时错误的异常时,可以使用这个类。

  3. catch (const std::runtime_error& e):这是一个异常捕获语句。当程序运行过程中抛出了一个std::runtime_error类型的异常时,这个catch语句会捕获到这个异常,并且在这个语句块中处理它。e是对捕获到的异常对象的引用,通过这个引用可以访问异常对象的相关信息。

  4. e.what():这是std::exception类(所有标准异常类的基类)中的一个成员函数,用于返回描述异常的字符串。对于std::runtime_error对象来说,调用what()函数会返回一个描述运行时错误的字符串。

简单来说,你的代码片段中的这些元素构成了一个异常处理的框架:

  • 程序在运行时可能会遇到错误,这时可以抛出一个std::runtime_error异常。
  • 当这个异常被抛出后,catch语句会捕获到这个异常。
  • catch语句块中,你可以通过调用异常对象的what()函数来获取描述错误的字符串,并据此进行相应的错误处理。

实例讲解:

#include <iostream>
#include <stdexcept>int main() {try {// 假设这里有一些代码可能会抛出std::runtime_error异常throw std::runtime_error("这是一个运行时错误");} catch (const std::runtime_error& e) {std::cerr << "捕获到运行时错误: " << e.what() << std::endl;}return 0;
}

补充包:

如果大家还是感兴趣的话呢请关注我们异常处理相关的课程 :

【易理解】04_什么是try-catch-throw语句?

一段幽默的对话让你们秒懂try-catch语句!!


http://www.ppmy.cn/devtools/157236.html

相关文章

【Spring】什么是Spring?

什么是Spring&#xff1f; Spring是一个开源的轻量级框架&#xff0c;是为了简化企业级开发而设计的。我们通常讲的Spring一般指的是Spring Framework。Spring的核心是控制反转(IoC-Inversion of Control)和面向切面编程(AOP-Aspect-Oriented Programming)。这些功能使得开发者…

嵌入式八股文面试题(一)C语言部分

1. 变量/函数的声明和定义的区别&#xff1f; &#xff08;1&#xff09;变量 定义不仅告知编译器变量的类型和名字&#xff0c;还会分配内存空间。 int x 10; // 定义并初始化x int x; //同样是定义 声明只是告诉编译器变量的名字和类型&#xff0c;但并不为它分配内存空间…

Nginx部署Umi React前端项目标准配置

文章目录 概要前端Umi项目配置文件请求后端Api打包 后端项目Nginx配置配置文件 错误信息 概要 使用UmiJs开发的前端项目打包部署在Nginx&#xff0c;主要是Umi中项目的配置和Nginx的配置 前端Umi项目 基于"umijs/max": "^4.3.24", "react": &…

RTMP 和 WebRTC

WebRTC(Web Real-Time Communication)和 RTMP(Real-Time Messaging Protocol)是两种完全不同的流媒体协议,设计目标、协议栈、交互流程和应用场景均有显著差异。以下是两者的详细对比,涵盖协议字段、交互流程及核心设计思想。 一、协议栈与设计目标对比 特性RTMPWebRTC传…

5分钟掌握React的Redux Toolkit + Redux

Redux Toolkit Redux 教程 1. 引言 本教程介绍如何使用 Redux Toolkit&#xff08;RTK&#xff09; 和 TypeScript 搭建 Redux 状态管理系统。 我们将创建一个 计数器&#xff08;Counter&#xff09; 和 待办事项&#xff08;Todo&#xff09; 模块&#xff0c;并学习 Redu…

C++六大默认成员函数

C六大默认成员函数 默认构造函数默认析构函数RAII技术RAII的核心思想优点示例应用场景 默认拷贝构造深拷贝和浅拷贝 默认拷贝赋值运算符移动构造函数&#xff08;C11起&#xff09;默认移动赋值运算符&#xff08;C11起&#xff09;取地址及const取地址操作符重载取地址操作符重…

QT +FFMPEG4.3 拉取 RTMP/http-flv 流播放 AVFrame转Qimage

QT FFMPEG4.3 拉取 RTMP/http-flv 流播放 Cc_Video_thread.h #ifndef CC_VIDEO_THREAD_H #define CC_VIDEO_THREAD_H#include <QThread> #include <QAtomicInt> #include <QImage>#ifdef __cplusplus extern "C" { #endif #include <libavfor…

C基础寒假练习(8)

一、终端输入10个学生成绩&#xff0c;使用冒泡排序对学生成绩从低到高排序 #include <stdio.h> int main(int argc, const char *argv[]) {int arr[10]; // 定义一个长度为10的整型数组&#xff0c;用于存储学生成绩int len sizeof(arr) / sizeof(arr[0]); // 计算数组…