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

本文介绍了C++标准异常处理机制中的关键概念,重点探讨了std::exception类及其成员函数what()的作用与使用方法。what()函数可以返回描述异常的具体信息,这对于理解异常原因至关重要。此外,文章还讨论了如何通过捕获异常来获取这些信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了在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++标准程序库》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值