exceptions.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 101 行

CPP
101
字号
/*=============================================================================    Copyright (c) 2005-2007 Dan Marsden    Copyright (c) 2005-2007 Joel de Guzman    Distributed under the Boost Software License, Version 1.0. (See accompanying     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)==============================================================================*/#include <stdexcept>#include <string>#include <boost/spirit/include/phoenix_core.hpp>#include <boost/spirit/include/phoenix_operator.hpp>#include <boost/spirit/include/phoenix_statement.hpp>#include <boost/detail/lightweight_test.hpp>int main(){    using namespace boost::phoenix;    using namespace boost::phoenix::arg_names;    using namespace std;    {        try        {            throw_(runtime_error("error"))();            BOOST_ERROR("exception should have been thrown");        }        catch(runtime_error& err)        {            BOOST_TEST(err.what() == string("error"));        }    }    {        try        {            try            {                throw runtime_error("error");            }            catch(exception&)            {                throw_()();                BOOST_ERROR("exception should have been rethrown");            }        }        catch(exception& err)        {            BOOST_TEST(err.what() == string("error"));        }    }    {        bool caught_exception = false;        try_        [ throw_(runtime_error("error")) ]        .catch_<exception>()        [ ref(caught_exception) = true ]();        BOOST_TEST(caught_exception);    }    {        bool caught_exception = false;        try_        [ throw_(runtime_error("error")) ]        .catch_all        [ ref(caught_exception) = true ]();        BOOST_TEST(caught_exception);    }    {        bool caught_correct_exception = false;        try_            [ throw_(runtime_error("error")) ]        .catch_<string>()            [ ref(caught_correct_exception) = false ]        .catch_<exception>()            [ ref(caught_correct_exception) = true]();        BOOST_TEST(caught_correct_exception);    }    {        bool caught_correct_exception = false;        try_            [ throw_(runtime_error("error")) ]        .catch_<string>()            [ ref(caught_correct_exception) = false ]        .catch_all            [ ref(caught_correct_exception) = true]();        BOOST_TEST(caught_correct_exception);    }    return boost::report_errors();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?