c++中try catch的用法小结

当在C++代码中使用异常处理时,我们必须使用“try-catch”块来捕捉和处理异常。下面是一些关于“C++中try catch的用法小结”的攻略:

一、try-catch块的基本用法

使用try-catch块来捕捉异常,代码块包围了可能引发异常的代码。

try {
    //可能引发异常的代码
}
catch(ExceptionType name) {
    //处理程序
}

这里,try块中的代码可能抛出ExceptionType类型的异常。如果这样,异常会直接按照catch代码块的内容来处理。在catch代码块中,我们可以处理异常,输出异常信息或者对其他应该处理的事情进行处理。

二、try、catch和throw的用法

当我们需要在代码中手动抛出异常,并在另一个地方捕捉到它时,我们需要使用throw语句。

try {
    //可能引发异常的代码
    throw ExceptionType(name);
}
catch(ExceptionType name) {
    //处理程序
    //输出异常信息等
}

在这种情况下,我们首先运行代码,在抛出异常之前:“try”块中的任何异常代码都无法往下执行。一旦抛出异常,我们就跳转到“catch”块中,并使用“name”参数来传递异常。

三、示例1:抛出自定义异常

在此示例中,我们定义了一个类“Exception”,它可以表示在该类中输入负数时所引发的自定义异常。在这种情况下,会在“try”块中调用“setNumber”函数,并根据异常输出了一个相应的消息。

class Exception {
    private:
        int num;

    public:
        Exception(int n) {
            num = n;
        }

        int getNum() {
        return num;
    }
};

void setNumber(int num) {
    if(num < 0)
        throw Exception(num);
}

int main() {
    try {
        setNumber(-3);
    } 
    catch(Exception& e ) {
        std::cout<<"输入的值为"<<e.getNum()<<",不能为负数"<<std::endl;
    }
    return 0;
}

四、示例2:嵌套的try…catch块

这里的示例中包含了两个嵌套的try-catch块,以便实现更完整的异常处理。在这里,我们使用了一个C++标准库函数“stoi”,它可以将字符串类型转换为整数类型。但如果字符串无法转换,则抛出异常,并将其捕捉并处理。

int main() {
    std::string s = "-5";
    int number1, number2;

    try {
        number1=std::stoi(s);
        try{
            number2=std::stoi("not_a_number");
        }
        catch(std::invalid_argument& e){
            std::cout<<"无法解析的数字"<<std::endl;
        }
    }
    catch (std::invalid_argument& e) {
        std::cout<<"无法解析的数字"<<std::endl;
    }

    return 0;
}

以上示例展示了异常处理的基本原理,C++中try-catch的用法以及使用自定义异常处理程序和嵌套的try-catch块来使异常处理更加完整和灵活。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++中try catch的用法小结 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • CDay03

    字符类型 编码 char类型采用ASCII编码,占1个字节,只用了7位(最高位是0),能表示128个字符。 需要记忆的: 空字符 ‘\0’ = 0 ‘ ‘ = 32 ‘0’ = 48 ‘A’ = 65 ‘a’ = 97 转义序列 字符转义序列 数字转义序列 八进制:以 \ 开头,后面最多接三个八进制数 十六进制:以 \x 开头,后面接十六进制数 字符处理函数…

    C语言 2023年4月18日
    00
  • C++使用宏函数实现单例模板详解

    下面就为你详细讲解“C++使用宏函数实现单例模板详解”的完整攻略。 1. 单例模式简介 单例模式是一种创建型设计模式,它确保某个类只有一个实例,并提供一个全局访问点,使得该实例能够被访问。单例模式在很多场景下都有非常重要的作用,例如线程池、配置文件读取等。 2. 使用宏函数实现单例模板 C++中使用宏函数可以方便地实现单例模板。具体实现步骤如下: 定义一个模…

    C 2023年5月23日
    00
  • c++动态内存管理与智能指针的相关知识点

    C++动态内存管理与智能指针攻略 知识点介绍 在 C++ 编程中,动态内存管理是非常重要的一部分。当我们需要在程序运行时动态生成对象或者数组,需要使用动态内存。但是,如果我们没有妥善管理动态内存,就会出现内存泄漏等严重问题,使程序出现崩溃等异常情况。 智能指针是 C++ 提供的一种便捷的动态内存管理方式,可以减少我们对内存的手动管理。使用智能指针可以避免内存…

    C 2023年5月22日
    00
  • C语言实现歌曲信息管理系统

    C语言实现歌曲信息管理系统攻略 1. 系统设计 歌曲信息管理系统是一种针对音乐爱好者实现音乐管理的软件系统,主要包括五个模块:歌曲信息录入、歌曲信息查询、歌曲信息修改、歌曲信息删除和退出系统。 1.1 数据结构设计 系统主要使用结构体来存储歌曲信息,每个结构体包括歌曲名称、歌手名称、专辑名称、发行日期和歌曲时长等信息。 struct Song { char …

    C 2023年5月23日
    00
  • C++实现简单班级成绩管理系统

    C++实现简单班级成绩管理系统攻略 1. 需求分析 在实现班级成绩管理系统前,首先需要明确实现系统的主要功能,如本系统需要实现的功能有:- 添加学生的基本信息,包括学生姓名和学号;- 添加学生成绩信息,包括数学、语文、英语等科目的成绩;- 对学生成绩进行管理,包括查看某个学生的成绩、某个科目的平均成绩、班级总体平均成绩等。 2. 设计思路 本系统的设计思路为…

    C 2023年5月30日
    00
  • C语言围圈报数题目代码实现

    我先来介绍一下 “C语言围圈报数题目代码实现” 是什么: 这是一道经典的数学题目,题目有三个人围成一圈,他们报数,规定报到第三个人的时候要翻过去,也就是从头开始,如此循环,直到只剩下最后一个人。现在我们需要用C语言实现这个过程。 下面是该算法的完整实现,以及代码解析: 思路分析 1.将所有人简化为一个数组,数组的下标表示的是人的编号。2.从第k个人开始循环报…

    C 2023年5月24日
    00
  • C++中的函数知识点大全

    C++中的函数知识点大全 C++作为一门强大的编程语言,函数是它最基本的组成部分之一,函数的使用和编写对于学习C++语言来说是至关重要的。本文将介绍C++函数的多种用法和注意事项。 函数的定义 函数是对一系列操作的封装,它可以完成一个特定的功能,可以在程序中被调用。一个函数的定义有以下形式: 返回类型 函数名(参数列表){ // 函数体 } 其中,返回类型指…

    C 2023年5月22日
    00
  • 一篇文章弄懂C++左值引用和右值引用

    一篇文章弄懂C++左值引用和右值引用 在C++中,左值和右值是很重要的概念。我们可以使用左值引用和右值引用来访问不同类型的值。本文将详细讲解左值引用和右值引用的概念及其用法。 左值和右值 在C++中,每个表达式都具有左值或右值属性。左值是具有标识符的表达式,这些标识符可以作为左值出现在表达式中,例如变量、数组元素等等。右值是不能被放在赋值符号左边的表达式。 …

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部