美文网首页
《C++ Primer Plus》:异常和其它

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

作者: Dragon_boy | 来源:发表于2020-07-31 19:10 被阅读0次

异常

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,用于天生危险的类型转换。

相关文章

网友评论

      本文标题:《C++ Primer Plus》:异常和其它

      本文链接:https://www.haomeiwen.com/subject/bujdrktx.html