C语言或C++中异常处理详解及其作用介绍

发布时间:2021-09-02 17:29:40 作者:chen
来源:亿速云 阅读:224

本篇内容主要讲解“C语言或C++中异常处理详解及其作用介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言或C++中异常处理详解及其作用介绍”吧!

目录

概述

作为一名专业写 Bug, 编程一天改 bug 一周的程序员. 学会异常处理是非常重要的. 我们不仅要考虑没有错误的理想情况, 更要考虑存在错误时的情况.

Debug 可以帮助我们尽快发现错误, 消除错误. 错误类别:

异常处理

设计程序时, 事先分析程序运行时可能出现的各种意外情况, 定制出相应的处理方法. 异常处理指对运行时出现的差错以及其他例外情况的处理.

没有异常处理程序时, 运行出现异常, 程序只能终止运行. 设置了异常处理机制, 运行出现异常, 程序的流程就转到异常处理代码段处理. 用户可以指定进行任何的处理.

举一个除数为 0 的例子:

#include <iostream>
using namespace std;

template <typename T>
T Div(T x, T y);

int main() {
    // 声明变量
    int x, y;
    double x1, y1;

    // 赋值
    cin >> x >> y;
    cin >> x1 >> y1;

    // 输出商
    cout << x << "/" << y << "=" << Div(x, y) << endl;
    cout << x1 << "/" << y1 << "=" << Div(x1, y1) << endl;

    return 0;
}

template <typename T>
T Div(T x, T y) {
    return x / y;
}

输出结果:

C语言或C++中异常处理详解及其作用介绍

众所周知分母不能为 0, 所以在这里我们可以看见程序终止运行了.

异常处理机制

我们把程序运行时的错误统称为异常. 对异常的处理统称为异常处理. C++ 中所提供的异常处理机制结构清晰, 在一定程度上可以保证程序的健壮性.

C++ 中处理异常的过程:

格式:

try {
    被检查语句
    throw 异常
}
catch(异常类型1) {
    进行异常处理的语句1
}
catch(异常类型2) {
    进行异常处理的语句2
}

函数声明指定异常

我们可以在函数声明中指定异常情况, 这样我们在看程序时能够知道所用的函数是否会抛出异常信息以及异常信息可能的类型. C++ 允许在声明函数时列出可能抛出的异常类型.

声明一个不能抛出异常的函数:

double triangle(double,double,double) throw();

声明一个能抛出异常的函数:

int triangle(int a, int b, int c) throw(runtime_error);

注: 要指定异常类型, 必须在声明和定义时都指定, 且类型相同.

练习

案例一

防止除数为 0:

#include <iostream>
using namespace std;

template <typename T>
T Div(T x, T y);

int main() {
    // 声明变量
    int x, y;
    double x1, y1;

    // 赋值
    cout << "Please enter two int:\n";
    cin >> x >> y;
    cout << "Please enter two double:\n";
    cin >> x1 >> y1;

    try {
        // 被检查的语句
        cout << x << "/" << y << "=" << Div(x, y) << endl;
        cout << x1 << "/" << y1 << "=" << Div(x1, y1) << endl;
    } catch (int) {  // 异常类型
        cerr << "除数为 0, 计算错误!" << endl;  // 异常处理数据
    } catch (double ) {  // 异常类型
        cerr << "除数为 0.0, 计算错误!" << endl;  // 异常处理数据
    }

    return 0;
}

template <typename T>
T Div(T x, T y) {
    if (y == 0){
        throw y;  // 抛出异常
    }

    return x / y;
}

输出结果:

Please enter two int:
1 2
Please enter two double:
2 0.0
除数为 0.0, 计算错误!
1/2=0
2/0=

案例二

求三角形周长, 防止三边小于零或组不成三角形.

#include <iostream>

using namespace std;

int triangle(int a, int b, int c);

int main() {
    // 声明变量
    int a, b, c;

    // 赋值
    cout << "Please enter the three side of the triangle:\n";
    cin >> a >> b >> c;

    try {
        // 被检查的语句
        cout << "length of the triangle: " << triangle(a, b, c) << endl;
    } catch (const runtime_error &error) {  // 异常类型
        cerr << error.what() << endl;  // 异常处理数据
    }

    return 0;
}

int triangle(int a, int b, int c) {
    if (a <= 0 || b <= 0 || c <= 0) {
        throw runtime_error("The sides of the triangle cannot be less than or equal to zero");
    } else if (a + b <= c || a + c <= b || b + c <= a) {
        throw runtime_error("The lengths of three sides can't form triangle");
    }
    return a + b + c;
}

输出结果:

C语言或C++中异常处理详解及其作用介绍

C语言或C++中异常处理详解及其作用介绍

C语言或C++中异常处理详解及其作用介绍

到此,相信大家对“C语言或C++中异常处理详解及其作用介绍”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. C++中的异常处理
  2. c语言结构体详解以及c语言struct用法介绍

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ c语言

上一篇:C语言或C++中抽象类详解及其作用介绍

下一篇:Python怎么实现批量压缩文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》