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

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.mrgr.cn/news/30092.html

相关文章:

  • Docker常用命令总结
  • Java线程池运行流程、配置参数及线程池类型
  • MATLAB系列08:输入/输入函数
  • 江协科技STM32学习- P13 TIM定时器中断
  • 探秘Python中的链表:从零开始的奇妙之旅
  • JAVA惊喜连连无限可能沉浸式盲盒商城系统小程序源码
  • 代码随想录 -- 二叉树 -- 删除二叉搜索树中的节点
  • 工单管理软件的优势有哪些?企业如何选择?
  • 【每日一诗】【诗词创作】【诗】《雨前秋夜》
  • 大模型学习起步的经验分享
  • Agile Modbus STM32裸机移植 从机使用
  • 图解Transformer工作原理(非常详细)零基础入门到精通,收藏这一篇就够了
  • C++ 面试模拟02
  • Mac 上哪个剪切板增强工具比较好用? 好用剪切板工具推荐
  • 二叉树的遍历【C++】
  • 土壤墒情测定仪的工作原理
  • layui table中的checkbox禁用问题
  • 再看Java-笔试
  • 为什么嫁人就要嫁公务员?稳定、收入高、福利好、资源多
  • 【技术解析】消息中间件MQ:从原理到RabbitMQ实战(深入浅出)