C++异常处理try和throw以及catch的使用

2023-11-09

异常捕获的基本构成方式

    try // c++异常的处理方式
    {
        // 包含可能抛出异常的语句
    }
    catch(类型名[形参名]) // 捕获特定类型的异常
    {
        // 处理异常的语句 条件是抛出的异常类型是与catch参数类型匹配
    }
    // try捕获异常并不能保证程序就不会崩溃,通常还需要做一下两个操作
    // 1、满足某个条件是显式抛出(throw)一个异常
    // 2、使用catch匹配异常类型 

异常捕获的基本引用

/*
 * @Author: Stylle
 * @Date: 2020-08-25 15:24:03
 * @LastEditors: Stylle
 * @LastEditTime: 2020-08-25 16:59:14
 * @FilePath: \learing-master\异常处理try和throw以及catch.cpp
 */
#include <iostream>

// 本函数会使程序崩溃
void func(int &num)
{
    int nNum = 10;
    int mNum = num;
    if (mNum == 0)
        throw "异常:除数等于0";
    // 如果捕获到异常下面的代码将不会执行
    if (mNum == 1)
        throw 1;
    int oNum = nNum / mNum;
    if (oNum == 0)
    {
        throw "errorCode = 2";
    }
    std::cout << oNum;
}
int main(int argc, char *argv[])
{
    std::cout << "hello world" << std::endl;
    // func(0); //异常
    // 异常处理操作步骤2
    try
    {
        int num = 9999;
        func(num); // 接受异常
    }
    catch (const char *error)
    {
        // 处理异常
        std::cout << error;
    }
    catch (int errorNum)
    {
        //抛出异常接受到整型
        std::cout << "异常数值:" << errorNum;
    }
    catch (...)
    {
        // 捕获所有异常:匹配性能最差,捕获性能最强
        std::cout << "其他异常";
    }
    return 0;
}

try、catch使用方法跟switch有点相识,只不过try指向全局

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++异常处理try和throw以及catch的使用 的相关文章

  • fastcgi的环境变量

    FCGI ROLE RESPONDER SCRIPT FILENAME scripts 5 cgi QUERY STRING aaa 11111111111111 bbb 2222222222222222 ccc 3333333333333
  • 侯捷系列:c++面向对象高级编程(上)

    文章目录 基于对象的程序设计 不带有指针成员变量的类 以复数类 Complex 为例 头文件的结构 访问级别 函数设计 内联函数 构造函数 常量成员函数 参数的值传递和引用传递 返回值的值传递和引用传递 友元 操作符重载 在类内声明 pub
  • C++知识积累:内存对齐理解

    为什么要进行内存对齐 这是因为CPU的读取总是对齐的 举个例子 假设CPU是32位的 那么CPU每次读取的4字节数据的首地址都是4的倍数 也就是说 内存中数据首地址为4的倍数时 CPU一次操作就可以完成数据读取 假设有一个int型四字节大小
  • R语言学习笔记:分析学生的考试成绩

    孩子上初中时拿到过全年级一次考试所有科目的考试成绩表 正好可以用于R语言的统计分析学习 为了不泄漏孩子的姓名 就用学号代替了 感兴趣可以下载测试数据进行练习 num class chn math eng phy chem politics
  • [原]Pro*C介绍-内嵌SQL

    Translate by Z Jingwei Document address http www db stanford edu ullman fcdb oracle or proc html Pro C介绍内嵌SQL 概要 Pro C语法
  • android通过JNI用C/C++创建本地文件

    通过jni在本地创建文件 1 在android studio创建基本的jni工程 并且在APP界面成功显示 Hello from C 不会的可以看android studio使用jni 2 在native lib cpp文件中创建文件 为了
  • Qt5学习之路(vs2012下创建一个QT应用程序)2013-10-14

    刚开始学习QT在网上找的资料基本都是使用QT Create进行开发的 VS下开发的学习资料感觉很少很难找的到 视频教程也基本没看到过貌似 因为我们研发中心是使用MFC进行开发开发工具是VS2010 使用QT开发的话基本我们不会再使用QT C
  • C语言pcre库的使用及验证IP地址的合法性

    PCRE是一个用C语言编写的正则表达式函数库 它十分易用 同时功能也很强大 性能超过了POSIX正则表达式库和一些经典的正则表达式库 在使用PCRE库时 首先肯定是需要安装pcre的 不过一般的系统都会有自带的PCRE库 不过如果想使用最新
  • Vc/MFC中自定义消息及其PostMessage触发使用

    http blog csdn net ztz0223 article details 2058402 http blog csdn net a8082649 article details 7733527 http bbs csdn net
  • JAVA,异常

    异常概念 通常大家认为异常就是错误 但这个错误有很多种 1 语法错误 2 JVM虚拟机错误 3 平台错误 4 程序运行错误 平台或者资源或者逻辑 数值等错误 常见的异常 1 java lang NullPointerException 空指
  • 简析多级指针解引用

    转自 简析多级指针解引用 指针是C语言中公认的最为强大的语法要素 但同时也是最难理解的语法要素 它曾给程序员带来了无数麻烦和痛苦 以致于在C语言之后诞生的很多新兴 语言中我们再也难觅指针的身影了 下面是一个最简单的C语言指针的例子 int
  • C++中的RTTI

    文章目录 dynamic cast运算符 指针类型的dynamic cast 引用类型的dynamic cast typeid运算符 使用RTTI type info类 参考资料 RTTI Runtime Type Information
  • Trace Function Enter, Exit and Leave

    http developer nokia com community wiki Trace Function Enter Exit and Leave
  • Open3D(C++)实现建筑物点云立面和平面分割提取

    Open3D C 实现建筑物点云立面和平面分割提取 近年来 点云技术在城市规划 机器人地图构建等领域得到广泛应用 本篇文章将介绍如何利用Open3D C 库实现建筑物点云立面和平面分割提取 准备工作 首先需要编译安装Open3D库 本文使用
  • visual studio 一直显示正在准备解决方案

    首先重启电脑 无法解决的情况下执行以下步骤 Kill Visual Studio Open Visual Studio without loading a solution Disable AnkhSvn as Source Control
  • 【数据结构/C++】树和二叉树_二叉链表

    include
  • C/C++编程中的算法实现技巧与案例分析

    C C 编程语言因其高效 灵活和底层的特性 被广大开发者用于实现各种复杂算法 本文将通过10个具体的算法案例 详细探讨C C 在算法实现中的技巧和应用 一 冒泡排序 Bubble Sort 冒泡排序 Bubble Sort 是一种简单的排序
  • C 语言运算符详解

    C 语言中的运算符 运算符用于对变量和值进行操作 在下面的示例中 我们使用 运算符将两个值相加 int myNum 100 50 虽然 运算符通常用于将两个值相加 就像上面的示例一样 它还可以用于将变量和值相加 或者将变量和另一个变量相加
  • C++ 字符串比较------strcmp函数和strncmp函数

    strcmp 函数原型 int strcmp const char str1 const char str2 功能 strcmp函数会按照字典顺序逐个比较两个字符串的字符 直到遇到不同的字符或者遇到字符串结束符 0 返回值 该函数返回值如下
  • C++实现函数重载的原理

    一 函数重载的概念 C 中允许存在同名函数 但要求函数参数的类型 个数不同 这些同名函数就称为函数的重载 void func int a int b cout lt lt func int a int b lt lt endl void f

随机推荐

  • VideoCapture.get()(python)

    param define cv2 VideoCapture get 0 视频文件的当前位置 播放 以毫秒为单位 cv2 VideoCapture get 1 基于以0开始的被捕获或解码的帧索引 cv2 VideoCapture get 2
  • 机器学习分类算法(六)-随机森林算法

    集成算法 集成学习 ensemble learning 是目前非常流行的机器学习策略 基本上所有问题都可以借用其思想来得到效果上的提升 基本出发点就是把算法和各种策略集中在一起 说白了就是一个搞不定大家一起上 集成学习既可以用于分类问题 也
  • 多线程之线程同步

    多线程内容大致分两部分 其一是异步操作 可通过专用 线程池 Task Parallel PLINQ等 而这里又涉及工作线程与IO线程 其二是线程同步问题 鄙人现在学习与探究的是线程同步问题 通过学习 CLR via C 里面的内容 对线程同
  • leetcode 200. 岛屿数量——java题解

    题目所属分类 flood fill 算法 dfs算法经典 原题链接 给你一个由 1 陆地 和 0 水 组成的的二维网格 请你计算网格中岛屿的数量 岛屿总是被水包围 并且每座岛屿只能由水平方向和 或竖直方向上相邻的陆地连接形成 此外 你可以假
  • java运行jar文件中某个类

    size medium 运行jar文件的方法是 1 java jar xxx jar 但是有时 我们希望运行里面的具体某个类 这时可以通过 1 java cp xxx jar xxx com xxxx 其中 cp命令是将xxx jar加入到
  • 定时任务中的cron表达式

    目录 cron 表达式的定义 cron 表达式时间域的定义 cron 表达式中的通配符 常用cron表达式示例 cron 表达式的定义 虽然之前用过 cron 表达式 但对其表达式的含义只是粗略了解 恰逢最近需要使用 经查询资料 对其进行详
  • 【数据挖掘】用户画像

    概念区分 Persona和Profile 经常都翻译为用户画像 二者的概念有相关的部分 但是也有区别 Persona 也叫做用户角色 是描绘抽象一个自然人的属性 用于产品和用户调研 Profile 是和数据挖掘 大数据息息相关的应用 通过数
  • STM32-keil5仿真调试

    借着备考蓝桥杯 整理一下32的调试技巧 1 在魔术棒里找到Debug栏 选择软件仿真 注意右下角Parameder 2 进入调试界面 3 点击进入示波器 点击setup设置 点击右上角新建 输入例如PORTA 6 再选择Display Ty
  • 背包算法的实现

    实现了将一些数据构成的一个背包问题做简单的实现 但不知道有没有理解对 如有错误 还请指出 物品类的javabean package main public class goods private int weight private int
  • 利用JDBC同步不同数据库间的历史数据(脚本)

    1 例如线上线下订单之间的同步 Controller RequestMapping import public class O2oImportOrderPaymentsController Autowired private O2oImpo
  • 解决绕过android下apk使用usb设备权限查询相应问题,自动获取usb权限

    转载请注明 http blog csdn net hubbybob1 article details 50263925 很多Android的应用在使用usb设备时 尤其是usb摄像头 前段时间编写了一个有关usb设备的apk 但是在使用时总
  • JS-style属性

    HTML元素 style 样式属性 值 document getElementById titles style color ff0000 document getElementById titles style fontSize 25px
  • HTML5上的LocalStorage(本地存储)基本用法

    获取localStorage的长度 window localStorage length 添加 编辑localStorage的内容 window localStorage setItem 键 值 根据对应的索引去获取对应localStora
  • Redhat5 安装序列号及版本说明

    为了保证安装的组件和订阅相匹配 红帽企业 Linux 5 需要输入一个安装号 它被用来配置安装程序来提供正确的软件包 安装号码包含在你的订阅里 如果您没有输入安装号码 只有核心服务器或 Desktop 将会被安装 其它功能可以在以后被手工安
  • Matlab Simulink 常用快捷操作和功能(1)

    1 快速查找library里面的模块 双击左键 然后输入要查询的模块名称 gt 2 block 和 signal 的命名修改 单击block 显示 修改名字 3 Simulink支持从块参数对话框中创建变量 可以在Simulink中创建MA
  • vue element admin 拖拽dialog v-el-drag-dialog

    1在vue element admin master里找到src directive el drag dialog文件夹复制到自己的相同目录下 2页面引用 import elDragDialog from directive el drag
  • 读者写者模型

    前一节介绍完了生产者消费者模型 它是一种一方生产数据 另一方消费数据的模式 下面介绍另外一种不同于生产消费的模型 即读者写者模型 两者相同 和前面的模型相比 读写模型中写者与写者之间还是互斥关系 写者与读者之间还是互斥与同步关系 两者差异
  • 数字信号处理第一次试验:系统响应及系统稳定性

    数字信号处理第一次试验 系统响应及系统稳定性 前言 一 实验目的 二 实验原理与方法 三 实验环境 四 实验内容及步骤 五 实验结果截图 含分析 六 思考题 七 实验报告要求 前言 为了帮助同学们完成痛苦的实验课程设计 本作者将其作出的实验
  • unity+高通vuforia开发增强现实(AR)教程(三) (勘误)

    按照原作者的想法 是可以实现手机观察到播放封面 但没法点击播放 针对这个问题 我翻看了官方论坛 因为最新的unity包缺少了一个C 文件 把缺少的文件加上 可以实现播放 以下为详细说明 The objective here is to sh
  • C++异常处理try和throw以及catch的使用

    异常捕获的基本构成方式 try c 异常的处理方式 包含可能抛出异常的语句 catch 类型名 形参名 捕获特定类型的异常 处理异常的语句 条件是抛出的异常类型是与catch参数类型匹配 try捕获异常并不能保证程序就不会崩溃 通常还需要做