首页 > 编程语言 >C++中的异常处理详细说明

C++中的异常处理详细说明

时间:2023-07-17 17:34:27浏览次数:39  
标签:Division int 代码 C++ try 详细 catch 异常

看代码的过程中,经常看到try{}catch{}语句块,而且还经常性的看到这样的语句

try
{
     //保护代码
}
catch(...)
{
    //处理任何异常的代码
}

刚开始我对catch(...)非常困惑,因为C#中并没有这样的用法. 所以,特意来了解学习一下C++中的异常处理方式

通常来说,try{}catch{}块中,try块中的代码我们称之为保护代码,catch中代码为处理(捕获)异常的代码, 还有个关键字throw,是扔出(抛出)异常的代码

throw抛出异常的代码,可以在代码块中的任何位置,任何地方. 比如我们在C++中实现除法运算时,如果除数为0,肯定会抛出异常,如下

double Division(int a, int b)
{
      if(b == 0)
      {
          throw "Division by zero is not allowed"
       }

       return (a/b);
}

一个try块后面,可以跟着多个catch块,意思就是说,这个try块可能抛出多种异常(多个异常),我们可以每个异常有一个对应的catch。 如果你想让catch块能够去处理try块抛出的任何类型的异常,那么就可以使用catch(..)  => 这也就是我在代码中经常看到catch(...)却不知道具体为何意的解释

我们来看一下一个try语句,抛出多种异常的可能性的情况

try
{
//保护代码 } catch(Exception1 e1) //处理捕获第1种类型的异常 { } catch(Exception2 e2) //处理捕获第2种类型的异常 { } ........ catch(ExceptionN eN) //处理捕获第N种类型的异常 { }

我们还是以上面的除法中除数为0的异常作为类子,来看我们的代码写法

#include <iostream>
using namespace std;

double Division(int a, int b)
{
      if(b == 0)
      {
          throw "Division by zero is not allowed"
       }

       return (a/b);
}

int main()
{ 
      int a = 4;
      int b = 0;
     double c = 0;

     try{
          c = Division(a,b);
          cout << c << end1;
      }
      catch(const char* except)
     {
          cout << except <<end1;
     }

      return 0; 
}

 

由于我们在Division函数中抛出的是一个字符串常量类型的异常(const char*类型的异常), 所以,我们在catch块中捕获该异常时,必须使用const char*类型

上面代码编译和执行时,输出  

Division by zero is not allowed


在C++中,定义了一些标准的异常,它们在命名空间std:exception中,我们也可以通过继承和重载std:exception来定义和实现自己的自定义异常。 具体我就不在这里阐述了


标签:Division,int,代码,C++,try,详细,catch,异常
From: https://www.cnblogs.com/wphl-27/p/17560694.html

相关文章

  • java 开发 详细设计文档
    如何实现Java开发详细设计文档作为一名经验丰富的开发者,我将会教你如何实现Java开发详细设计文档。下面是整个流程的步骤:步骤描述1确定需求和功能2设计类和关系3编写类的详细说明4编写方法的详细说明5添加代码示例6添加测试用例7完善文档......
  • sun.misc.BASE64Decoder包异常问题处理
    之前有一个用的是jdk1.7的,最近导入发现各种报错。sun.misc.BASE64Decoder包找不到了,解决:展开后,找到Accessrules:,增加**,然后保存就可以生效。 ......
  • IntelliJ IDEA 永久开发工具下载安装详细教程
    简介IDEA全称IntelliJIDEA,是java编程语言的集成开发环境。IntelliJ在业界被公认为最好的Java开发工具下载安装►官网地址:https://www.jetbrains.com/idea►快速下载(官方安装包等工具)IDEA有两个版本,一个是Ultimate(旗舰版)一个是Community(社区版),旗舰版可以免费试用......
  • C++ 异常处理
     异常是程序在执行期间产生的问题。C++异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++异常处理涉及到三个关键字:try、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。......
  • 捕获异常
     catch 块跟在 try 块后面,用于捕获异常。您可以指定想要捕捉的异常类型,这是由catch关键字后的括号内的异常声明决定的。try{//保护代码}catch(ExceptionNamee){//处理ExceptionName异常的代码}https://www.scsmld.com/mnst22/......
  • 抛出异常
     您可以使用 throw 语句在代码块中的任何地方抛出异常。throw语句的操作数可以是任意的表达式,表达式的结果的类型决定了抛出的异常的类型。以下是尝试除以零时抛出异常的实例:doubledivision(inta,intb){if(b==0){throw"Divisionbyzerocondition!";}retur......
  • Oracle 异常处理
    在编程语言中异常处理是必不可少的部分,plsql也不例外,一个良好的提示能让调试和排查中少走很多弯路,简单记录一下oracle异常处理中常用的部分:pragma用来定义异常标识符(系统已经定义了大部分异常标识符,即常量)语法:declaree_20001;初始化异常变量pragmaexception_init(e_2......
  • 常用语言的线程模型(Java、go、C++、python3)
    背景知识软件是如何驱动硬件的?硬件是需要相关的驱动程序才能执行,而驱动程序是安装在操作系统内核中。如果写了一个程序A,A程序想操作硬件工作,首先需要进行系统调用,由内核去找对应的驱动程序驱使硬件工作。而驱动程序怎么让硬件工作的呢?驱动程序作为硬件和操作系统之间的媒介,可以......
  • Java python C++
    Java和Python的区别编程范式:Java是一种面向对象的编程语言,而Python支持多种编程范式,包括面向对象、函数式和命令式等。这意味着Python在某些情况下可以比Java更简洁、易于理解和编写。代码可读性:Python是一种非常易于阅读和编写的编程语言,其语法和代码风格非常清晰......
  • 超详细整合SSM框架--(Spring + Spring MVC + MyBatis)
    超详细整合SSM框架--(Spring+SpringMVC+MyBatis)阅读该文章之前首先要清楚Spring框架,SpringMVC框架,Mybatis框架。SSM框架,是Spring+SpringMVC+MyBatis的缩写,这个是继SSH之后,目前比较主流的JavaEE企业级框架,适用于搭建各种大型的企业级应用系统。SpringMVC框架:MVC简......