C++(8):try语句块和异常处理

异常是指在程序运行时的反常行为。如果程序中含有可能引发异常的代码,则需要专门的代码对其进行处理。
异常处理包括

    1,throw表达式:异常检测部分使用throw表达式来表示它遇到了无法处理的问题。
    2,try语句块中抛出的异常由switch子句处理异常
    3,一套异常类:用于在throw表达式和相关的catch子句之间传递异常的具体消息。

举个例子,程序转载自
https://github.com/pezy/CppPrimer/blob/master/ch05/ex5_25.cpp
两个数相÷的程序,除数为0 产生异常。

#include <iostream>
#include <stdexcept>
using namespace std;
int main()
{
    int a, b;
    cout << "Input two integers: ";
    while (cin >> a >> b) {
        try {
            if (b == 0) throw runtime_error("divisor is 0");
            cout << static_cast<double>(a) / b << endl;
            cout << "Input two integers: ";
        }
        catch (runtime_error err) {
            cout << err.what();
            cout << "\nTry Again? Enter y or n:" << endl;
            char c;
            cin >> c;
            if (!cin || c == 'n')
                break;
        }
    }
    return 0;

其中runtime_error是一个异常类。
异常类定义在4个头文件中:

1,exception头文件定义了最通用的异常类exception。
2,stdexcept头文件定义了常用的异常类
    rentime_error//运行时错误
    range_error//结果超出了有意义的值域范围
    overflow_error//计算上溢
    underflow_error//计算下溢
    logic_error//逻辑错误
    domain_error//参数对应的结果,值不存在
    invalid_error//无效参数
    length_error//试图创建一个超出该类型最大长度的对象
    out_of_range//使用超出有效范围的值
3,new头文件定义了bad_alloc异常类型
4,type_info头文件定义了bad_cast异常类
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值