Home C&C++函数库 c++ 语法 程序源码 Linux C库

std::

<exception>

类   <exception>
class exception;

标准异常类
标准异常的基类。

标准库组件抛出的所有对象都派生自这个类。因此,所有标准异常类型都可以通过引用捕获。

它被声明为:
C++98
class exception {
public:
  exception () throw();
  exception (const exception&) throw();
  exception& operator= (const exception&) throw();
  virtual ~exception() throw();
  virtual const char* what() const throw();
}

C++11
class exception {
public:
  exception () noexcept;
  exception (const exception&) noexcept;
  exception& operator= (const exception&) noexcept;
  virtual ~exception();
  virtual const char* what() const noexcept;
}

☞ 成员函数



(constructor) 异常处理构造函数 (公众成员函数)
operator= 复制异常(公众成员函数)
what (virtual) 获取字符串识别异常(公共成员函数)
(destructor) (virtual) 析构异常对象(公共虚成员函数)

☞ 派生类型(分散在不同的库头文件中)



bad_alloc 分配内存失败时抛出的异常 (类)
bad_cast 动态强制转换失败时抛出的异常 (类)
bad_exception 意外处理程序抛出的异常 (类)
bad_function_call 错误调用时抛出异常 (类)
bad_typeid 空指针类型异常 (类)
bad_weak_ptr 过期的weak_ptr (类)
ios_base::failure 流异常的基类 (公共成员类)
logic_error 逻辑错误异常(类)
runtime_error 运行时错误异常(类)
间接(通过logic_error):
domain_error 域错误异常 (类)
future_error 未来错误异常 (类)
invalid_argument 无效的参数异常 (类)
length_error 长度错误异常 (类)
out_of_range 超出范围异常 (类)
间接(通过 runtime_error):
overflow_error 溢出错误异常 (类)
range_error 范围错误异常 (类)
system_error 系统错误异常 (类)
underflow_error 下溢错误异常 (类)
间接(通过 bad_alloc):
bad_array_new_length 数组长度错误时异常 (类)
间接(通过 system_error,始于c++ 11):
ios_base::failure 流异常的基类 (公共成员类)

☣  示例



// exception example
#include <iostream>       // std::cerr
#include <typeinfo>       // operator typeid
#include <exception>      // std::exception

class Polymorphic {virtual void member(){}};

int main () {
  try
  {
    Polymorphic * pb = 0;
    typeid(*pb);  // throws a bad_typeid exception
  }
  catch (std::exception& e)
  {
    std::cerr << "exception caught: " << e.what() << '\n';
  }
  return 0;
}

可能输出:
exception caught: St10bad_typeid


联系我们 免责声明 关于CandCplus 网站地图