当前位置: 首页 > news >正文

C语言大师(8)异常处理

引言
异常处理是C++编程中处理运行时错误的关键机制。它通过 trycatchthrow 关键字提供了一种强大的方法来处理程序执行中可能出现的异常情况。了解如何有效地使用这些机制对于编写健壮且可维护的程序至关重要。

1. 基本异常处理

在C++中,try 块用于包围可能发生错误的代码段,而 catch 块则用于捕获并处理抛出的异常。

#include <iostream>int main() {try {// 可能抛出异常的代码throw std::runtime_error("An error occurred");} catch (conststd::runtime_error &e) {// 捕获并处理异常std::cout << "Caught an exception: " << e.what() << std::endl;}return 0;
}

这个示例演示了如何使用 trycatch 来处理 std::runtime_error 类型的异常。

2. 多个异常处理

我们可以通过设置多个 catch 块来捕获和处理不同类型的异常,从而使异常处理更加具体和有针对性。

#include <iostream>int main() {try {// 可能抛出多种类型的异常throw 20;  // 这里以整数作为异常抛出} catch (const std::runtime_error &e) {std::cout << "Caught a runtime error: " << e.what() << std::endl;} catch (int e) {std::cout << "Caught an integer: " << e << std::endl;}return 0;
}

在这个例子中,根据抛出异常的类型,不同的 catch 块将被执行。

3. 标准异常

C++标准库中提供了多种标准异常类型,如 std::runtime_errorstd::out_of_range 等,这些都是从 std::exception 类派生而来。

#include <iostream>
#include <vector>int main() {std::vector<int> vec = {1, 2, 3};try {std::cout << vec.at(10) << std::endl;  // 尝试访问不存在的元素} catch (const std::out_of_range &e) {std::cout << "Out of Range error: " << e.what() << std::endl;}return 0;
}

这个例子中,我们展示了如何捕获 std::out_of_range 异常,这是在访问超出 vector 范围时抛出的。

结语
异常处理为C++程序提供了一种安全处理错误和异常的机制。通过使用 trycatchthrow,程序员可以编写更加健壮和可维护的代码。重要的是要合理使用异常处理,避免滥用,并确保异常被正确和高效地处理。

相关文章:

C语言大师(8)异常处理

引言 异常处理是C编程中处理运行时错误的关键机制。它通过 try、catch 和 throw 关键字提供了一种强大的方法来处理程序执行中可能出现的异常情况。了解如何有效地使用这些机制对于编写健壮且可维护的程序至关重要。 1. 基本异常处理 在C中&#xff0c;try 块用于包围可能发生…...

网络防御保护——1.网络安全概述

一.网络安全概念 通信保密阶段 --- 计算机安全阶段 --- 信息系统安全 --- 网络空间安全 APT攻击 --- 高级持续性威胁 网络安全(网络空间安全--Cyberspace)从其本质上讲就是网络上的信息安全&#xff0c;指网络系统的硬件、软件及数据受到保护。不遭受破坏、更改、泄露&#xf…...

SpringBoot整合ElasticSearch实现分页查询

本文使用SpringBoot整合ElasticSearch实现分页查询 文章目录 环境准备 环境准备 还是继续使用spring-boot-starter-data-elasticsearch来实现分页查询操作...

[C++]使用yolov8的onnx模型仅用opencv和bytetrack实现目标追踪

【官方框架地址】 yolov8: https://github.com/ultralytics/ultralytics bytetrack: https://github.com/ifzhang/ByteTrack 【算法介绍】 随着人工智能技术的不断发展&#xff0c;目标追踪已成为计算机视觉领域的重要研究方向。Yolov8和ByTetrack作为当前先进的算法&…...

打造专业级ChatGPT风格聊天界面:SpringBoot与Vue实现动态打字机效果,附完整前后端源码

大家好&#xff0c;今天用SpringBoot、vue写了一个仿ChatGPT官网聊天的打字机效果。 所有代码地址:gitee代码地址 &#xff0c;包含前端和后端&#xff0c;可以直接运行 使用本技术实现的项目&#xff1a;aicnn.cn&#xff0c;欢迎大家体验 如果文章知识点有错误的地方&#xf…...

KMP-重复子字符串

Problem: 459. 重复的子字符串 文章目录 题目思路复杂度Code 题目 给定一个字符串str1, 判断其是否由重复的子串构成。 例子1&#xff1a;输入 str1‘ababab’ &#xff1b;输出 true 例子2&#xff1a;输入 str1‘ababac’ &#xff1b;输出 false 思路 重复子字符串组成的字…...

如何使用Markdown生成目录索引

一、Markdown生成目录索引怎么折叠 在Markdown中&#xff0c;可以使用[TOC]语法生成目录索引。 如果想要折叠目录&#xff0c;则需要使用一些插件&#xff0c;如Tocbot、jquery-tocify等。 例如&#xff0c;在使用Tocbot时&#xff0c;可以在Markdown文档中加入以下代码&…...

R语言【taxa】——as_taxon():转换为 taxon 对象

Package taxa version 0.4.2 Description 将其他对象转换为 taxon 向量。taxon 构造器可能将 基础向量转换为 taxon 向量。 Usage as_taxon(x, ...) Arguments 参数【x】&#xff1a;要转换为 taxon 向量的对象。 参数【...】&#xff1a;其余参数。 Examples x <- taxo…...

Android状态栏布局隐藏的方法

1.问题如下&#xff0c;安卓布局很不协调 2.先将ActionBar设置为NoActionBar 先打开styles.xml 3.使用工具类 package com.afison.newfault.utils;import android.annotation.TargetApi; import android.app.Activity; import android.content.Context; import android.graph…...

idea创建公用依赖包项目

创建parent项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…...

设计模式之装饰器模式

面向对象设计原则 接口隔离原则&#xff1a;面向对象设计之接口隔离原则-CSDN博客 设计模式 工厂模式 &#xff1a; 设计模式之工厂模式-CSDN博客 迭代器模式&#xff1a;设计模式之迭代器模式-CSDN博客 适配器模式&#xff1a;设计模式之适配器模式-CSDN博客 过滤器模式&#…...

【Java万花筒】缓存与存储:Java应用中的数据处理利器

激发性能之源&#xff1a;深度剖析Java开发中的五大数据缓存与存储方案 前言 在现代软件开发中&#xff0c;高效地处理和存储数据是至关重要的任务。本文将介绍一系列在Java应用中广泛使用的数据缓存与存储库&#xff0c;涵盖了Ehcache、Redisson、Apache Cassandra、Hazelca…...

解决nodejs报错内存泄漏问题,项目无法运行

解决方法一 一、使用 increase-memory-limit npm install increase-memory-limit //本项目中使用// 或 npm install -g increase-memory-limit //全局安装二、安装 npm install --save cross-env 配置package.json文件 LINMIT大小 81928g "scripts": {"f…...

计算机网络-物理层基本概念(接口特性 相关概念)

文章目录 总览物理层接口特性星火模型给出的相关概念解释&#xff08;仅供参考&#xff09; 总览 求极限传输速率&#xff1a;奈氏准则&#xff0c;香农定理&#xff08;背景环境不一样&#xff09; 编码&#xff1a;数据变成数字信号 调制&#xff1a;数字信号变成模拟信号 信…...

从规则到神经网络:机器翻译技术的演化之路

文章目录 从规则到神经网络&#xff1a;机器翻译技术的演化之路一、概述1. 机器翻译的历史与发展2. 神经机器翻译的兴起3. 技术对现代社会的影响 二、机器翻译的核心技术1. 规则基础的机器翻译&#xff08;Rule-Based Machine Translation, RBMT&#xff09;2. 统计机器翻译&am…...

python 面经

关于自身特点 1. 介绍下自己&#xff0c;讲一下在公司做的项目 2. 说一下熟悉的框架&#xff0c;大致讲下其特点 python 基础 1.可变与不可变类型区别 2.请解释join函数 3.请解释*args和**kwargs的含义&#xff0c;为什么使用* args&#xff0c;** kwargs&#xff1f; 4.解释…...

Ubuntu (Linux) 下创建软链接(即符号链接,相当于windows下的快捷方式)方法

Ubuntu (Linux) 下创建软链接&#xff08;即符号链接&#xff0c;相当于windows下的快捷方式&#xff09;方法 使用创建软链接的命令 #命令格式如下。注意&#xff1a;请使用绝对路径&#xff0c;否则链接可能失效 ln -s <源文件或目录的绝对路径> <符号链接文件&am…...

LeetCode.2765. 最长交替子数组

题目 2765. 最长交替子数组 分析 为了得到数组 nums 中的最长交替子数组的长度&#xff0c;需要分别计算以每个下标结尾的最长交替子数组的长度。为了方便处理&#xff0c;计算过程中需要考虑长度等于 1 的最长交替子数组&#xff0c;再返回结果时判断最长交替子数组的长度…...

Springboot日志框架logback与log4j2

目录 Springboot日志使用 Logback日志 日志格式 自定义日志格式 日志文件输出 Springboot启用log4j2日志框架 Springboot日志使用 Springboot底层是使用slf4jlogback的方式进行日志记录 Logback日志 trace&#xff1a;级别最低 debug&#xff1a;调试级别的&#xff0c…...

浪花 - 用户信息展示+更新

1. 用户登录获取登录凭证 已登录的用户才能获取个人信息发送 Aixos 请求登录 const user ref();onMounted(async () > {const res await myAxios.get(/user/current);if (res.code 0) {console.log("获取用户信息成功");user.value res.data;} else {consol…...

OpenClaw+ollama-QwQ-32B内容处理:自动生成周报与会议纪要

OpenClawollama-QwQ-32B内容处理&#xff1a;自动生成周报与会议纪要 1. 为什么需要自动化内容处理工具 每周五下午三点&#xff0c;我的日历总会准时弹出"编写本周工作报告"的提醒。这个看似简单的任务&#xff0c;却常常让我陷入两难&#xff1a;要么花半小时手动…...

Undecimus革新性全流程越狱技术指南:从核心价值到实用工具

Undecimus革新性全流程越狱技术指南&#xff1a;从核心价值到实用工具 【免费下载链接】Undecimus unc0ver jailbreak for iOS 11.0 - 12.4 项目地址: https://gitcode.com/gh_mirrors/un/Undecimus 一、核心价值&#xff1a;破解iOS生态三大痛点 Undecimus作为针对iOS…...

开源条码字体技术:如何通过字体文件彻底改变条码生成方式

开源条码字体技术&#xff1a;如何通过字体文件彻底改变条码生成方式 【免费下载链接】librebarcode Libre Barcode: barcode fonts for various barcode standards. 项目地址: https://gitcode.com/gh_mirrors/li/librebarcode 条码生成技术长期以来依赖专业软件和专用…...

从人工到智能:SubtitleOCR如何实现硬字幕提取的效率革命

从人工到智能&#xff1a;SubtitleOCR如何实现硬字幕提取的效率革命 【免费下载链接】SubtitleOCR 快如闪电的硬字幕提取工具。仅需苹果M1芯片或英伟达3060显卡即可达到10倍速提取。A very fast tool for video hardcode subtitle extraction 项目地址: https://gitcode.com/…...

PUMA560轨迹规划踩坑记:DH参数选错,你的仿真结果还准吗?

PUMA560轨迹规划实战&#xff1a;从DH参数陷阱到精准运动控制 第一次在MATLAB中看到PUMA560机械臂的末端执行器画出诡异的"8"字轨迹时&#xff0c;我盯着屏幕足足愣了三分钟。按照教科书上的标准DH参数编写的代码&#xff0c;理论上应该生成完美的直线运动&#xff0…...

告别调参玄学:手把手教你用‘黎卡提方程’为自动驾驶LQR控制器选择Q和R矩阵

自动驾驶轨迹跟踪实战&#xff1a;从黎卡提方程到LQR调参的工程化思考 当你在仿真环境中第一次看到自己设计的LQR控制器让车辆完美跟踪参考轨迹时&#xff0c;那种成就感难以言喻。但更多时候&#xff0c;我们面对的是震荡的超调曲线、缓慢的收敛速度&#xff0c;以及令人抓狂的…...

嵌入式 数据结构 线性表 学习笔记

线性表线性结构的特点是&#xff1a;1、存在唯一的一个被称作“第一个”的数据元素2、存在唯一的一个被称作“最后一个”的数据元素3、除第一个之外&#xff0c;集合中的每个元素均只有一个前驱4、除最后一个以外&#xff0c;集合中的每个数据元素均只有一个后继顺序表示和实现…...

2026年网络安全报告

2026年网络安全报告 2026年网络安全报告分析了2025年全球网络威胁形势&#xff0c;指出攻击速度和规模加快&#xff0c;人工智能、身份滥用等技术被攻击者整合&#xff0c;同时预测了2026年行业趋势并给出首席信息安全官建议。 网络安全趋势 不止电子邮件&#xff1a;多渠道…...

ImageMagick安装后报错‘vcomp140.dll缺失’?手把手教你彻底解决Visual C++依赖问题

ImageMagick安装后报错‘vcomp140.dll缺失’&#xff1f;手把手教你彻底解决Visual C依赖问题 当你兴冲冲下载完ImageMagick准备大展身手时&#xff0c;命令行却突然弹出一串红色错误提示——"无法启动程序&#xff0c;因为计算机中丢失vcomp140.dll"。这种场景对于…...

ai辅助开发:告诉快马你的想法,自动生成jdk17最佳实践代码

今天想和大家分享一个特别实用的开发技巧——如何用AI辅助快速掌握JDK17的新特性。作为一个经常需要升级Java版本的开发者&#xff0c;我发现每次版本更新都要花大量时间学习新语法&#xff0c;直到遇到了InsCode(快马)平台的AI辅助功能。 传统开发方式的痛点 以前用JDK8写代码…...