【C++ Primer】5.6 try语句块和异常处理

5.6 try语句块和异常处理

5.6.1 throw表达式

throw表达式包含关键字throw和紧随其后的一个表达式,其中的表达式的类型就是抛出的异常类型。

if(item1.isbn() != item2.isbn())
    throw runtime_error("Data must refer to same ISBN");

类型runtime_error是标准库异常类型的一种,定义在stdexcept头文件中。初始化runtime_error对象的方式是给它提供一个string对象或C风格的字符串。

5.6.2 try语句块

try {
    program-statements // 一段可能抛出异常的代码
} catch (exception-declaration) {   // catch子句括号内包括一个对象的声明(可以未命名)
    handler-statements // 异常处理代码
}
try {
    if(item1.isbn() != item2.isbn())
    	throw runtime_error("Data must refer to same ISBN");
    ...
} catch (runtime_error err) {
    cout << err.what() << endl;  
}

如果没有找到任何匹配的catch子句,程序转到名为terminate()的标准库函数。

5.6.3 标准异常

大多数异常类型应该使用string对象或者C风格字符串初始化,提供含有错误相关的信息。异常类型只定义了一个名为what的成员函数,该函数没有任何参数,返回值是一个C风格字符串的const char*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值