c++ 异常类别(Exception Classes)的成员

为了在catch子句中处理异常,需要知道异常提供哪些接口。所有标准异常只提供一个可用的接口函数:what(),用以获取异常“型别之外的附加信息”。

namespace std {
  class exception {
  public:
    virtual const char* what() const throw();
    …
  };
}

what()返回的字符串,很大程度决定了帮助的级别和信息的详细度。该字符串是以null结尾的“multibyte”字符串,也可以轻松转换为wstring并显示出来。what()返回的C-string在其所属的异常对象销毁后,就不再有效(标准没有强制)。

除了what(),再没有任何异常提供任何其它成员函数,能够描述异常的种类。唯一通用的异常评估手段,大概只有打印一途。

try {
  …
}
catch (const std::exception& error) {
  // print implementation-defined error message
  std::cerr << error.what() << std::endl;
}

唯一可能实现的另一个异常评估手段是,根据异常的精确型别,自己得出推论。例如,如果抛出bad_alloc异常,可能是因为程序企图获得更多内存。

【学习资料】 《c++标准程序库》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值