try catch 异常处理

news2024/10/5 8:27:51
C++中使用异常时应注意的问题
    任何事情都是两面性的,异常有好处就有坏处。如果你是C++程序员,
并且希望在你的代码中使用异常,那么下面的问题是你要注意的。

        1. 性能问题。这个一般不会成为瓶颈,但是如果你编写的是高性能或者实时性要求比较强的软件,
就需要考虑了。

       2. 指针和动态分配导致的内存回收问题:在C++中,不会自动回收动态分配的内存,
如果遇到异常就需要考虑是否正确的回收了内存。在java中,就基本不需要考虑这个,有垃圾回收机制。

        3. 函数的异常抛出列表:java中是如果一个函数没有在异常抛出列表中显式指定要抛出的异常,
就不允许抛出;可是在C++中是如果你没有在函数的异常抛出列表指定要抛出的异常,意味着你可以抛出任何异常。

        4. C++中编译时不会检查函数的异常抛出列表。这意味着你在编写C++程序时,
如果在函数中抛出了没有在异常抛出列表中声明的异常,编译时是不会报错的。而在java中会检查。

        5. 在java中,抛出的异常都要是一个异常类;但是在C++中,你可以抛出任何类型,
你甚至可以抛出一个整型。(当然,在C++中如果你catch中接收时使用的是对象,而不是引用的话,那么你抛出的对象必须要是能够复制的。这是语言的要求,不是异常处理的要求)。

        6. 在C++中是没有finally关键字的。而java和python中都是有finally关键字的。

捕获异常
抛出异常用throw,捕获用try……catch。

我们可以借助 C++ 异常机制来捕获上面的异常,避免程序崩溃。捕获异常的语法为:

try{
    // 可能抛出异常的语句
}catch(exceptionType variable){
    // 处理异常的语句
}

解释如下:

异常	描述
std::exception	该异常是所有标准 C++ 异常的父类。
std::bad_alloc	该异常可以通过 new 抛出。
std::bad_cast	该异常可以通过 dynamic_cast 抛出。
std::bad_exception	这在处理 C++ 程序中无法预期的异常时非常有用。
std::bad_typeid	该异常可以通过 typeid 抛出。
std::logic_error	理论上可以通过读取代码来检测到的异常。
std::domain_error	当使用了一个无效的数学域时,会抛出该异常。
std::invalid_argument	当使用了无效的参数时,会抛出该异常。
std::length_error	当创建了太长的 std::string 时,会抛出该异常。
std::out_of_range	该异常可以通过方法抛出,例如 std::vector 和 std::bitset<>::operator[]()。
std::runtime_error	理论上不可以通过读取代码来检测到的异常。
std::overflow_error	当发生数学上溢时,会抛出该异常。
std::range_error	当尝试存储超出范围的值时,会抛出该异常。
std::underflow_error	当发生数学下溢时,会抛出该异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保偏产品系列丨5款保偏光纤产品简介

保偏光纤应用日益扩大&#xff0c;特别是在干涉型传感器等测量方面&#xff0c;利用保偏光纤的光无源器件起着非常重要的作用&#xff0c;种类也很多。 本文来介绍5款保偏光纤系列产品以及它们的性能&#xff0c;欢迎收藏转发哦&#xff01; 01、保偏光纤跳线-TLPMPC 保偏光纤跳…

2015年全国硕士研究生入学统一考试管理类专业学位联考数学试题——纯题目版

2015 级考研管理类联考数学真题 一、问题求解&#xff08;本大题共 15 小题&#xff0c;每小题 3 分&#xff0c;共 45 分&#xff09;下列每题给出 5 个选项中&#xff0c;只有一个是符合要求的&#xff0c;请在答题卡上将所选择的字母涂黑。 1.若实数a,b, c 满足 a : b : c…

手机记事本中的内容转到新手机不见了,怎么办?

在更换新手机时&#xff0c;很多网友都会面临这样一个问题&#xff0c;这就是旧手机中的重要数据如何转移到新手机上。一般来说&#xff0c;如果是相同品牌的手机&#xff0c;我们可以借助手机云空间账号进行数据的同步&#xff1b;但如果使用的是不同品牌的手机&#xff0c;这…

如何恢复电脑回收站中的数据?应对已清空电脑回收站的措施

在我们日常使用电脑的过程中&#xff0c;误删文件是难以避免的。幸运的是&#xff0c;电脑回收站提供了一种简便的方式来找回被删除的文件。然而&#xff0c;有些文件可能不会进入回收站&#xff0c;或者回收站的数据被清空&#xff0c;导致丢失的文件无法通过常规方式恢复。在…

在rails项目里面把a链接中的com前半部分用sub替换

在Rails项目中&#xff0c;你可以使用sub方法来替换a链接中的"com"前半部分。下面是一个示例&#xff1a; # 假设a链接的原始URL为&#xff1a;https://example.com/some/pagelink "https://example.com/some/page" modified_link link.sub("com…

node.js宿舍管理系统-计算机毕设 附源码80331

node.js宿舍管理系统 摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于角度存在偏差&#xff0c;人们经常能够获取不同类型的信息&#xff0c;这也是技术最为难以攻克的课题。针对宿舍管理系统等问题&#…

高防IP服务靠谱吗?能抵御什么攻击?

今天我们要揭开一个神秘而又酷炫的面纱——高防IP服务&#xff01;是不是已经感到心跳加速了呢&#xff1f;那么&#xff0c;问题来了&#xff0c;高防IP服务靠谱吗&#xff1f;它能抵御什么攻击呢&#xff1f; 我们来给大家科普一下高防IP服务是什么。简单来说&#xff0c;高防…

JetBrains编程IDE将具备Ai助手功能,或将提高开发速度

近日JetBrains发布博客文章宣布&#xff0c;本周所有基于IntelliJ的IDE和.NET工具的EAP版本都将具备AI助手功能。而这些操作或许将提高开发效率&#xff0c;并且这些AI助手也是使用自家的**ERP**模型和OpenAI服务。 JetBrains表示&#xff0c;当下AI助手功能主要体现在IDE的两…

adb 查询app占用的cup和内存

一、先将cpu定频 先进入shell 模式 adb shell 查看当前CPU的工作模式 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 然后把CPU工作模式设置为performance模式 echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 改完后查看模式…

Pytest接口自动化框架

目录 前言&#xff1a; 插件&#xff1a; test_case pytest.ini (pytest.ini 配置文件不支持注释) run_all.py report 插件&#xff1a; test_case pytest.ini (pytest.ini 配置文件不支持注释) run_all.py report 前言&#xff1a; pytest是一个基于Python的开源测试框…

ShaderGraph制作“红旗迎风飘扬”效果(Unity2019版)

零、准备“旗面”游戏物体 旗面是一个平面&#xff0c;右键创建的3D物体里是平面的&#xff0c;有Quad和Plan&#xff0c;模仿旗面“起伏”的原理是对平面的顶点&#xff0c;做不同程度的抬升&#xff1a;Quad从线框图中看&#xff0c;是一个长方形&#xff0c;只有四个顶点&am…

nginx unknown directive “stream“

目录 1、安装依赖 2、执行命令 nginx 运行报错&#xff1a;unknown directive "stream"的原因&#xff0c;主要是因为没有安装stream模块导致的&#xff0c;我们只需要编译安装一下stream模块即可解决这个问题。 1、安装依赖 提前安装编译所需要的依赖插件 # gcc…

【机器学习与遥感】sklearn与rasterio实现遥感影像非监督分类

在学习遥感的过程中&#xff0c;我们都了解到了监督分类与非监督分类&#xff0c;二者是遥感解译的基础。之前更多的是使用Erdas与ENVI来进行这两种分类。这里使用python语言&#xff0c;基于机器学习库sklearn与遥感影像处理库rasterio&#xff0c;使用kmeans动态聚类方法实现…

PP-Structure—表格数据提取

目录 简介 特性 效果展示 表格识别 版面分析和表格识别 版面恢复 关键信息抽取 快速开始 1. 准备环境 1.1 安装PaddlePaddle 1.2 安装PaddleOCR whl包 2 快速使用 3. 便捷使用 3.1 命令行使用 3.2 Python脚本使用 3.3 返回结果说明 分析总结 简介 PP-Stru…

Python 装饰器

一、什么是装饰器 装饰器本质上就是一个Python函数&#xff0c;它可以装饰在其他函数上&#xff0c;使得其他函数不需要做任何改动就可以获得装饰器函数中的功能。实际上被装饰器修饰的函数在执行的时候不会直接运行其函数内部的逻辑&#xff0c;而是先将这个函数当作参数传递…

【企业架构治理】SOGAF ,Salesforce 的运营、治理和架构框架

“如果你想要新的东西&#xff0c;你必须停止做旧的东西。”——彼得德鲁克&#xff0c;《公司概念》的作者 这篇文章介绍了 Salesforce 运营、治理和架构框架 (SOGAF)&#xff0c;这是一个新的大规模治理框架&#xff0c;由对跨多个行业的学术文献、现有框架和转型案例研究的广…

如何对数据库进行垂直拆分或水平拆分?

水平拆分的意思&#xff0c;就是把一个表的数据给弄到多个库的多个表里去&#xff0c;但是每个库的表结构都一 样&#xff0c;只不过每个库表放的数据是不同的&#xff0c;所有库表的数据加起来就是全部数据。水平拆分的意 义&#xff0c;就是将数据均匀放更多的库里&#xff0…

高性能计算培训机构哪些好?培训机构排行推荐!

目前市面上高性能计算培训不多&#xff0c;尤其是专业做高性能计算培训的机构更是不多。 比较好的高性能计算培训有北大未名超算队、各类超算中心的高性能计算培训视频、以及猿代码科技的系统实战化的高性能计算培训课程&#xff0c;这些在B站上均有不错的播放量&#xff0c;群…

【Go语言从入门到精通系列-基础篇】Go语言变量、常量和运算符:完全指南

系列文章目录 【Go语言从入门到精通系列-基础篇】Go安装 语言特性&#xff0c;以及开启你人生中的第一个go程序 【Go语言从入门到精通系列-基础篇】Go语言包的管理以及基础语法与使用。 Go语言从入门到精通系列-基础篇 系列文章目录前言一、变量和常量的基本概念1. 变量1.1 变…

赶赴一场夏日盛宴丨千岛湖夏季团建旅行攻略

千岛湖的秀丽景色让人惊艳&#xff0c;也是江浙沪地区热门的团建目的地之一&#xff1b; 千岛湖 千岛湖团建元素&#xff1a;【千岛湖风景区】【山顶观景台】【皮划艇】【环湖骑行】【卡丁车】【高空闯关】【篝火晚会】【湖畔烧烤】【高空跳伞】 【千岛湖山顶观景台】 站在湖畔…