美文网首页
【C++温故知新】异常处理

【C++温故知新】异常处理

作者: 超级超级小天才 | 来源:发表于2019-08-28 23:08 被阅读0次

    这是C++类重新复习学习笔记的第 八 篇,同专题的其他文章可以移步:https://www.jianshu.com/nb/39156122

    异常的抛出与捕获

    异常是程序在执行期间产生的问题,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:trycatchthrow

    • throw:当问题出现时,程序抛出一个异常
    • catch:在想要处理问题的地方,通过异常处理程序捕获异常
    • try:try块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。

    使用throw可以在一些特定的时候令程序抛出异常,比如当遇到除数是0的时候:

    if(division == 0)
        throw "division by zero condition!";
    

    一个try……catch的写法通常是这这样的:

    try
    {
        // protected codes
    }
    catch( ExceptionName e1 )
    {
        // catch block
    }
    catch( ExceptionName e2 )
    {
        // catch block
    }
    

    如果要捕获所有的异常,则需要在catch的括号中使用省略号:

    try
    {
        // protected codes
    }
    catch( … )
    {
        // catch block
    }
    

    定义新的异常

    可以通过继承和重载exception类来定义新的异常,比如像下边这样:

    struct MyException : public exception
    {
        const char * what() const throw()
        {
            return "New Exception";
        }
    };
     
    try
    {
        throw MyException();
    }
    catch ( MyException& e)
    {
        cout << "MyException caught" << endl;
        cout << e.what() << endl;
    }
    catch (exception& e)
    {
        // other exceptions
    }
    

    转载请注明出处,本文永久更新链接:https://blogs.littlegenius.xin/2019/08/28/【C-温故知新】八异常处理/

    相关文章

      网友评论

          本文标题:【C++温故知新】异常处理

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