《C++ Primer Plus》:异常和其它

异常

abort()

abort()位于cstdlib头文件里,它向标准错误流发送消息(程序异常终止),然后终止程序,这样,可以在条件检查后,发生异常的话就终止程序。

异常机制

使用try代码块,用catch捕获异常,try代码块发生异常后,就会跳转到catch块,如:

try
{
  ...
}
catch (const char* s)
{
  ...
}

还可以使用throw关键字,它可以抛出一个自定义的异常字符串,也可以跟一个对象:

throw "some exception";
throw object();

exception类

位于exception头文件中,可以将其作为异常类的基类。其中有一个成员方法what()虚方法,返回一个代表异常的字符串。

class bad_heam : public std::exception
{
public:
  const char* what(){return "...";}
};

RTTI

即运行阶段类型识别。C++支持3个RTTI元素:

  • dynamic_cast,将使用一个指向基类的指针生成一个指向派生类的指针。
  • typeid,返回一个指出对象的类型的值。
  • type_info,该结构存储了有关特定累心的信息。

类型转化运算符:

有4个类型转化运算符:

  • dynamic_cast
  • const_cast
  • static_cast
  • reinterpret_cast

const_cast将值转换为const或volatile。static_cast:

static_cast<type-name>(expression)

只有当type-name可被隐式转换为expression类型时,或expression可被隐式转换为type-name所属类型时,static_cast才合法。

reinterpret_cast不允许删除const,用于天生危险的类型转换。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。