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

C++ 异常处理——学习记录007

1. 概念

程序中的错误分为编译时错误和运行时错误。编译时出现的错误包括关键字拼写出错、语句分号缺少、括号不匹配等,编译时的错误容易解决。运行时出现的错误包括无法打开文件、数组越界和无法实现指定的操作。运行时出现的错误称为异常,对异常的处理称为异常处理,传统的异常处理方法基本上是判断或分支来实现。而采用判断和分支语句处理异常的方法不适合大量异常的处理,也不能处理不可预知的异常。

2. C++ 处理异常的方法

C++处理异常的方法是,若在执行一个函数的过程中出现异常,可以不在本函数立即处理,而是发出一个信号,交给他的上一级(函数调用者)来解决,若上一级也不能解决,则继续交给上一级,直至交给系统。系统会自动调用系统函数terminate,调用abort来终止程序。

3. 代码示例

#include<iostream>
using namespace std;float Div(int x, int y) {if (y == 0) {throw y;			// 抛出float异常}return x / y;
}int main()
{int a = 10, b = 0;try {cout << Div(a, b) << endl;		// 代码保护段}catch(int){cout << "捕获到int型异常" << endl;}catch (double) {}catch (...) {						// 捕获异常cout << "除数为0" << endl;}return 0;
}

4. 总结

  1. 被保护的代码必须放在try语句的大括号中,否则不起作用
  2. 异常捕获catch语句必须有一对大括号,即使括号里没有任何语句
  3. 一个try语句可以对应多个catch语句,catch后紧跟的小括号可以只写类型名称
  4. 如果在throw语句中没有指定异常信息类型,则可以使用catch(...)语句来捕获任何类型的异常
  5. throw语句后可以不跟任何表达式,直接写分号。

相关文章:

C++ 异常处理——学习记录007

1. 概念 程序中的错误分为编译时错误和运行时错误。编译时出现的错误包括关键字拼写出错、语句分号缺少、括号不匹配等&#xff0c;编译时的错误容易解决。运行时出现的错误包括无法打开文件、数组越界和无法实现指定的操作。运行时出现的错误称为异常&#xff0c;对异常的处理…...

【BIM+GIS】“BIM+”是什么? “BIM+”技术详解

对于我们日常生活影响最大的是信息化和网络化给我们的日常生活带来革命性的变化。“互联网+“在建筑行业里可以称为“BIM+”。“BIM+”"即是通过BIM与各类技术(互联网、大数据等)结合去完成不同的任务。将产品的全生命周期和全制造流程的数字化以及基于信息通信技术的模块…...

Flink算子如何限流

目录 使用方法 调用类图 内部源码 GuavaFlinkConnectorRateLimiter RateLimiter 使用方法 重写AbstractRichFunction中的open()方法,在处理数据前调用limiter.acquire(1); 调用limiter.open(getRuntimeContext())的源码,实际内部是RateLimiter,根据并行度算出subTask…...

垃圾分代收集的过程是怎样的?

垃圾分代收集是Java虚拟机(JVM)中一种常用的垃圾回收策略。该策略将堆内存分为不同的代(Generation)&#xff0c;通常分为年轻代(Young Generation)和老年代(Old Generation)。不同代的对象具有不同的生命周期和回收频率。 下面是Java中垃圾分代收集的一般过程&#xff1a; 1…...

NPM 常用命令(四)

目录 1、npm diff 1.1 描述 1.2 过滤文件 1.3 配置 diff diff-name-only diff-unified diff-ignore-all-space diff-no-prefix diff-src-prefix diff-dst-prefix diff-text global tag workspace workspaces include-workspace-root 2、npm dist-tag 2.1 常…...

Anaconda虚拟环境下导入opencv

文章目录 解决方法测试 解决方法 1、根据自己虚拟环境对于的python版本与电脑对应的位长选择具体的版本&#xff0c;例如python3.9选择cp39&#xff0c;64位电脑选择64 下载地址&#xff1a;资源地址 若是不确定自己虚拟环境对应的python版本&#xff0c;可以输入下列命令&…...

Linux设备驱动程序

一、设备驱动程序简介 图1.1 内核功能的划分 可装载模块 Linux有一个很好的特性:内核提供的特性可在运行时进行扩展。这意味着当系统启动 并运行时&#xff0c;我们可以向内核添加功能( 当然也可以移除功能)。 可在运行时添加到内核中的代码被称为“模块”。Linux内核支持好几…...

mybatis <if>标签判断“0“不生效

原if标签写法 <if test"type 0"><!--内部逻辑--> </if> 这种情况不生效,原因是mybatis是用OGNL表达式来解析的&#xff0c;在OGNL的表达式中&#xff0c;0’会被解析成字符(而我传入的type却是string)&#xff0c;java是强类型的&#xff0c;cha…...

企业数据的存储形式与方案选择

企业数据的存储形式 DAS&#xff08;直接附加存储&#xff09;&#xff1a;企业初期银行规模不大&#xff0c;企业的数据存储需求也比较简单&#xff0c;因此对企业数据存储的要求就是安全保存并可以随时调用。而DAS的之间连接可以解决单台服务器的存储空间扩展&#xff0c;高…...

图像处理简介

目录 基本术语 1 .图像(image) 1.1 像素(Pixel) 1.2 颜色深度&#xff08;Color Depth&#xff09; 1.3 分辨率&#xff08;Resolution&#xff09; 1.4 像素宽高比&#xff08;Pixel Aspect Ratio&#xff09; 1.5 帧率(FPS) 1.6 码率&#xff08;BR&#xff09; 1. …...

adb server version (19045) doesn‘t match this client (41); killing.的解决办法

我是因为安装了360手机助手&#xff0c;导致adb版本冲突。卸载之后问题解决 根据这个思路&#xff0c;如果产生"adb server version (19045) doesn’t match this client (41); killing."的错误&#xff0c;检查一下是否有多个版本的adb服务。...

实验室的服务器和本地pycharm怎么做图传

提前说一个 自认为 比较重要的一点&#xff1a; 容器中安装opencv&#xff0c;可以先试试用 apt install libopencv-dev python3-opencv 我感觉在图传的时候用的不是 opencv-python 而是ubuntu的opencv库 所以用 apt install 安装试一下 参考 远程调试 qt.qpa.xcb: coul…...

Vue + Element UI 前端篇(五):国际化实现

Vue Element UI 实现权限管理系统 前端篇&#xff08;五&#xff09;&#xff1a;国际化实现 国际化支持 1.安装依赖 执行以下命令&#xff0c;安装 i18n 依赖。 yarn add vue-i18n $ yarn add vue-i18n yarn add v1.9.4 warning package-lock.json found. Your project …...

[ROS]虚拟机ubuntu18.04系统里面运行usb_cam

首先安装usb_cam sudo apt-get install ros-melodic-usb-cam 运行&#xff1a; roscore roslaunch usb_cam usb_cam-test.launch 如果一运行报错&#xff0c;首先确认是否存在/dev/video0 可以使用ls /dev/video*查看&#xff0c;如果没有就是没有连接摄像头&#xff0c;…...

常用通讯协议比较

dubbo与http1.0的区别 二进制协议&#xff1a;Dubbo使用自定义的二进制协议&#xff0c;而HTTP 1.0使用文本&#xff0c;发送一条相同的消息&#xff0c;http1.0会有更大的网络开销。 连接复用&#xff1a;Dubbo采用单一的多路复用NIO长链接&#xff0c;每个请求都有一个对应的…...

鼠标键盘管理 ShareMouse for Mac最新

软件“ShareMouse”允许您通过单个鼠标和键盘控制多台计算机&#xff1a; 将鼠标移动到您想要控制的计算机的监视器上&#xff0c;指针会神奇地跳转到该计算机。任何鼠标和键盘输入都会传输到相应的计算机。 与网络KVM类似&#xff0c;ShareMouse通过本地LAN传输鼠标移动和点…...

【ALM工具软件】上海道宁与Perforce为您带来用于整个生命周期的应用程序生命周期管理软件

Helix ALM是 用于整个生命周期的 应用程序生命周期管理的ALM软件 具有专用于 需求管理&#xff08;Helix RM&#xff09;、测试用例管理&#xff08;Helix TCM&#xff09; 问题管理&#xff08;Helix IM&#xff09;的功能模块 Helix ALM提供了 无与伦比的可追溯性 您将…...

Android图形-架构2

目录 引言 组件概述 底层组件&#xff1a; 上层组件&#xff1a; 引言 Android图形架构主要涉及些什么呢&#xff1f; 1&#xff09;Android 系统级图形架构的基本元素&#xff1f; 2&#xff09;应用框架和多媒体系统如何使用这些元素&#xff1f; 3&#xff09;图形数据…...

文字验证码:简单有效的账号安全守卫!

前言 文字验证码不仅是一种简单易懂的验证方式&#xff0c;同时也是保护您的账号安全的重要工具。通过输入正确的文字组合&#xff0c;您可以有效地确认自己的身份&#xff0c;确保只有真正的用户才能访问您的账号。 HTML代码 <script src"https://cdn6.kgcaptcha.…...

Shell 运算符及语法结构

目录 一、Shell运算符 1.1 表达式expr 1.2 运算操作 1.3 操作实例 二、Shell条件判断 2.1 基本语法 2.2 值、权限、类型、多条件判断 三、Shell流程控制 3.1 if 流程语法 3.2 case 流程语法 3.3 for 流程语法 3.4 内部运算符 3.5 while循环流程语法 四、Shell读…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

CppCon 2015 学习:Time Programming Fundamentals

Civil Time 公历时间 特点&#xff1a; 共 6 个字段&#xff1a; Year&#xff08;年&#xff09;Month&#xff08;月&#xff09;Day&#xff08;日&#xff09;Hour&#xff08;小时&#xff09;Minute&#xff08;分钟&#xff09;Second&#xff08;秒&#xff09; 表示…...

链式法则中 复合函数的推导路径 多变量“信息传递路径”

非常好&#xff0c;我们将之前关于偏导数链式法则中不能“约掉”偏导符号的问题&#xff0c;统一使用 二重复合函数&#xff1a; z f ( u ( x , y ) , v ( x , y ) ) \boxed{z f(u(x,y),\ v(x,y))} zf(u(x,y), v(x,y))​ 来全面说明。我们会展示其全微分形式&#xff08;偏导…...