C++ Primer笔记 C++ 异常处理

来源:互联网 发布:java数据库编程 编辑:程序博客网 时间:2024/06/06 18:47

C++ Primer 中文版第四版

page188

 

每一个标准库异常类都定义了一个名为what的成员函数,不需要参数,参会C风格字符串的错误信息,如果发送异常则先从抛出

异常的函数中找catch块,如果没有则从调用它的函数中找,层层往上,直到找到为止,如果没有则跳转到名为terminate的标准

库函数非正常退出。

eg. 捕捉bitset转换为ulong时超出ulong长度的异常

#include <iostream>

#include <bitset>

using namespace std;


int main()

{

    bitset<100> bs;

    for(size_t i = 0; i != bs.size(); ++ i)

    {

        bs.set(i);

    }

    unsigned long ul = 0;

    try

    {

        ul = bs.to_ulong();

        cout<<ul<<endl;

    }

    catch(overflow_error err)

    {

        cout<<err.what()<<endl;

    }


    cout<<endl;

    return 0;

}


运行结果:

bitset<N> conversion overflow



------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------

①exception头文件定义了最常见的异常类,它的类名是exception。这个类只通知异常的产生,但不会提供更多的信息。

②stdexcept头文件定义了几种常见的异常类,如下,详见page189

exception

runtime_error

range_error

overflow_error

underflow_error

logic_error

domain_error

invalid_error

length_error

out_of_range

③new头文件定义了bad_alloc异常类型,提供因无法分配内存而由new抛出的异常。

④type_info头文件定义了bad_cast异常类型。


 

 


原创粉丝点击