Exception Classes for Language Support
bad_cast,定义在<typeinfo>,当执行一个dynamic_cast操作,但是出现类型转换运行时错误时抛出。
bad_typeid,定义在<typeinfo>,当传递给typeid参数为0或空指针抛出。
bad_exception,定义在<exception>,用来处理非期望的异常,可被unexception()抛出
Exception Classes for Logic Errors
定义在<stdexcept>
invalid_argument,length_error,out_of_range,domain_error
future_error异步系统调用发生逻辑错误,定义在<future>
Exception Classes for Runtime Errors
range_error,比如在标准库中在宽字符串和字节字符串之间转换
overflow_error,算数运算中出现上溢错误,比如bitset到整型的转换
underflow_error,算数运算下溢错误
system_error,系统相关,比如线程类,控制数据竞争的类,和async()抛出的错误
bad_alloc,定义在<new>,当使用new操作符出错抛出,除了nothrow的new
bad_array_new_length,传递给new的大小小于0或超出了可实现的上限
bad_weak_ptr,定义在<memory>,当从一个shared pointer创建一个weak pointer失败了抛出
bad_function_call,定义在<functional>
ios_base::failure,定义在<ios>,当一个流由于出错或到达文件尾时改变状态
Exceptions Thrown by the Standard Library
理论上任何以上异常都有可能抛出。
详细阐述待定