C++学习, 异常处理

news/2024/9/19 14:32:13 标签: jvm, 开发语言, c++, 学习, c语言, 算法

C++ 提供了异常处理机制,允许程序在运行时检测和处理错误情况。这种机制通过 trycatch 和 throw 关键字来实现。当程序遇到异常情况时,它可以抛出一个异常,然后控制权转移到能够处理该异常的代码块。

基本概念

  • throw:用于抛出一个异常。它可以抛出 C++ 中的任何类型的数据,但通常是派生自 std::exception 的对象。
  • try:用于标记一个代码块,该代码块内的异常将被捕获并处理。
  • catch:用于捕获并处理异常。可以指定捕获特定类型的异常,或者捕获所有类型的异常(使用省略号 ...)。

 

try/catch 语句用法:

try
{
   // 保护代码
}catch( ExceptionName e1 )
{
   // catch 块
}catch( ExceptionName e2 )
{
   // catch 块
}catch( ExceptionName eN )
{
   // catch 块
}

 

 throw 语句用法:

double division(int a, int b)
{
   if( b == 0 )
   {
      throw "Division by zero condition!";
   }
   return (a/b);
}

 

异常处理示例:

#include <iostream>  
#include <stdexcept> // 包含 std::runtime_error 
  
void mightGoWrong() {  
    // 假设这里有一段可能出错的代码  
    throw std::runtime_error("Something went wrong!");  
}  
  
int main() {  
    try {  
        mightGoWrong(); // 这里可能会抛出异常  
        std::cout << "This line won't be executed if an exception is thrown.\n";  
    } catch (const std::runtime_error& e) {  
        // 捕获 std::runtime_error 类型的异常  
        std::cerr << "Caught an exception: " << e.what() << '\n';  
    }  
  
    // 这里的代码会继续执行,即使 mightGoWrong() 中抛出了异常  
    std::cout << "Execution continues after the exception.\n";  
  
    return 0;  
}

 


http://www.niftyadmin.cn/n/5665704.html

相关文章

Gitlab runner的简单使用(一)

Gitlab runner的简单使用&#xff08;一&#xff09; 使用 GitLab CI 配置文件在 main 分支提交时触发作业 GitLab CI/CD 提供了一种强大的方式来自动化软件开发过程&#xff0c;包括构建、测试和部署应用程序。在这篇文章中&#xff0c;我们将介绍如何通过 GitLab CI 配置文…

PDF转图片的思路思考

记录时间:2022年9月1日 PDF转图片库的使用和扩展 python有几个开源的免费的处理Pdf的库&#xff0c;甚至有的已经有很完善的功能了。我发挥一下自己的所学&#xff0c;看看能不能把它变为可用的一程序。 首先是了解PDF处理库PyMupdf&#xff0c;这个库得到路径之后普就可以对…

Vue.js 的 Mixins

Vue.js 的 Mixins 是一种非常强大且灵活的功能&#xff0c;它允许你封装可复用的 Vue 组件选项。Mixins 实际上是一种分发 Vue 组件可复用功能的非常灵活的方式。一个 mixin 对象可以包含任意组件选项。当组件使用 mixin 时&#xff0c;所有 mixin 选项将被“混入”该组件本身的…

解决nginx代理SSE接口的响应没有流式返回

目录 现象原来的nginx配置解决 现象 前后端分离的项目&#xff0c;前端访问被nginx反向代理的后端SSE接口&#xff0c;预期是流式返回&#xff0c;但经常是很久不响应&#xff0c;一响应全部结果一下子都返回了。查看后端项目的日志&#xff0c;响应其实是流式产生的。推测是n…

Xilinx系FPGA学习笔记(九)DDR3学习

系列文章目录 文章目录 系列文章目录前言DDR介绍DDR的IP核学习接口信号解析读写流程分析AXI 前言 这里暂时先只介绍一下IP核配置生成和一些接口信号的含义&#xff0c;后续还需要补很多知识点和实际测试应用 DDR介绍 DDR3 已不是当今主流的 DDR 存储器&#xff0c;市场上的 …

axure的下载,激活,汉化全过程,多图

1.前言 下载地址&#xff1a;https://pan.baidu.com/s/12xo1mJer2hmBK7QrYM5v-Q?pwd0107#list/path%2Fcsdn%E5%85%B1%E4%BA%AB%E6%96%87%E4%BB%B6 源文章&#xff1a;https://blog.csdn.net/iwanttostudyc/article/details/123773796?ops_request_misc%257B%2522request%25…

【学术会议征稿】第四届信息控制、电气工程及轨道交通国际学术会议(ICEERT 2024)

第四届信息控制、电气工程及轨道交通国际学术会议(ICEERT 2024&#xff09; 2024 4th International Conference on Information Control, Electrical Engineering and Rail Transit 欢迎参加第四届信息控制、电气工程及轨道交通国际学术会议 (ICEERT 2024)&#xff0c;会议将…

【Django】Django REST Framework接口实现详解:从APIView到ModelViewSet

Django REST Framework接口实现详解&#xff1a;从APIView到ModelViewSet 在Web开发中&#xff0c;设计RESTful API接口时&#xff0c;Django REST Framework&#xff08;DRF&#xff09;是一个非常强大的工具。DRF提供了丰富的类视图&#xff08;CBV&#xff09;实现方式&…