C++之异常处理学习笔记

来源:互联网 发布:淘宝和拼多多哪个货真 编辑:程序博客网 时间:2024/06/08 19:02

看了国嵌的深度实践c++视频,记录下,C++中提供了try和catch语句块对可能产生异常的代码进行分开处理。Try语句块处理正常逻辑。Catch语句块处理异常。C++语言中通过throw语句引发一个异常。

Throw语句用于将异常对象抛出,throw语句将异常抛出,如果在当前函数中没有try … catch语句能够处理该异常,则当前函数将立即返回。

异常被传递到上层调用函数,仍然需要try … catch语句进行处理,如果上层函数也没有能力处理该异常,则异常继续向更上层函数的函数传递。

如果在函数调用栈中的所有函数都无法处理抛出的异常,则程序异常终止。

例如:

int test(int i)

{

   if( i == 1 )

    {

       throw -1;

    }

   if( i == 2 )

    {

       throw "ERROR";

    }

   if( i == 3 )

    {

       throw 0.5;

    }

   if( i == 4 )

    {

       throw 'd';

    }

   return i;

}

在使用时:

for(int i=0; i<5; i++)

    {

       try

       {

           cout<<test(i)<<endl;

       }

       catch(int e)//根据抛出的类型决定怎样异常处理

       {

           cout<<"Int: "<<e<<endl;

       }

       catch(const char* e)

       {

           cout<<"const char*: "<<e<<endl;

       }

       catch(double e)

       {

           cout<<"double: "<<e<<endl;

       }

}

C++中的catch语句可以使用捕获所有的异常。Catch(…)可以捕获所有异常但却无法得到异常信息。Catch(…)一般作为最后一个异常处理块出现。当我们看到代码中的catch就要意识到这里在处理异常情况,而异常是在对应的try中产生的。

try catch语句也是可以嵌套的,在catch(…)语句块中,可以通过不带参数的throw语句抛出捕获的异常。

不要在构造函数中抛出异常,在构造函数可能申请系统资源,而在构造函数中抛出异常会导致对象构造不完全。不完全对象的析构函数是不会被调用的,因此可能造成资源泄漏。

 

在工程中可以使用标准库中的异常类,可以将标准库中的异常类作为基类派生新的异常类,标准库中的异常都是从exception类派生的。Exception类有两个主要的分支,logic_error用于描述程序中出现的逻辑错误,比如,传递无效参数,,,runtime_error用于描述无法预料的事件所造成的,如:内存耗尽、硬件错误。

logic_error 和runtime_error都提供了一个参数为字符串的构造函数,这样就可以保持错误信息。通过what()成员函数就可以得到错误的信息。

例如;

 

classdivide_by_zero : public logic_error

{

public:

    divide_by_zero(const char* s) :logic_error(s)

    {

    }

};

doubleDiv(double a, double b)

{

    if((-0.00000001 < b) && ( b < 0.00000001) )

    {

        throw divide_by_zero("Divide byzero...");

    }

   

    return a / b;

}

使用时:

  try

    {

        cout<<Div(1, 0)<<endl;

    }

    catch(exception& e)

    {

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

    }

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 全屏无遮单身妈和儿子漫画 全屏无遮单身妈和儿子线播放 青岛重庆真实儿子亲妈 全屏无遮单身在线播放 四川真实亲妈视频链接 全屏无遮单身妈和儿子在线播放中文字 白边液越用白边越大 四川亲妈真实视频 普通话对白边电话边看边干 浙江边干边对白边对白边对白 离婚后一直跟儿子做 边骂脏话对白 离婚多年生理需求和儿子 儿子很帅没忍住和他 离婚后跟儿子做 和儿子一起旅游没忍住 离婚很多年和儿子一起 怀孕了、是儿子的 子母相伦动漫视频 离婚多年和儿子一起打工住一起没忍住 双子母视频 视频播放 与岳 母坐摩托车txt小说 我的丝母韵母txt 经典家庭伦txt丝母韵欲下载 经典家庭伦txt丝母韵欲阅读 经典家庭伦txt丝母韵欲全文阅读 笔趣阁丝母欲韵1-5 我的丝母韵欲txt下载 丝母欲韵1-5阅读 水利局的妈赵丽颖我的丝母欲韵 我的丝母欲韵4-9 经典家庭伦txt岳丝母小丹韵欲下载 水利局的妈赵丽静 我的丝母欲韵 岳丝母小丹韵 丝母欲韵txt全文下载80 经典家庭伦txt丝母韵欲光棍 李阳阳 白爽 丝母 我的丝母欲韵盘多多 娇母 笔趣阁 校长妈陈淑娴外篇 丝母欲韵500