[boost-users][exception] BOOST_THROW_EXCEPTION returns
Hello all, A function throws boost::exception as follows: //.... typedef boost::error_info<struct tag_action, std::string> action_name; BOOST_THROW_EXCEPTION(error() << action_name(name)); return 0; Both BOOST_NO_EXCEPTIONS and BOOST_EXCEPTION_DISABLE are *not* defined. The excpetion is not catched anywhere. However, the thread continues running! If I put breakpoint at "return 0;" it's hit, and I can continue stepping the code. I run the program under MSVC 9.0, in debug mode, and I see "First-chance exception" and "Unhandled exception" notifications issued by the debugger. Isn't it wrong behavior, or I miss something? Thanks, Igor'.
Igor, how is BOOST_THROW_EXCEPION defined? The line might expand to error() << action_name(name); which does not throw than. Regards, Ovanes On Tue, Mar 24, 2009 at 6:28 PM, Igor R <boost.lists@gmail.com> wrote:
Hello all,
A function throws boost::exception as follows:
//.... typedef boost::error_info<struct tag_action, std::string> action_name; BOOST_THROW_EXCEPTION(error() << action_name(name)); return 0;
Both BOOST_NO_EXCEPTIONS and BOOST_EXCEPTION_DISABLE are *not* defined. The excpetion is not catched anywhere. However, the thread continues running! If I put breakpoint at "return 0;" it's hit, and I can continue stepping the code. I run the program under MSVC 9.0, in debug mode, and I see "First-chance exception" and "Unhandled exception" notifications issued by the debugger. Isn't it wrong behavior, or I miss something?
Thanks,
Igor'. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
You can generate preprocessed output by MSVC. I usually mark the code with some pragmas to easily find it, e.g. #pragma boost_throw_exception_resolution typedef boost::error_info<struct tag_action, std::string> action_name; BOOST_THROW_EXCEPTION(error() << action_name(name)); #pragma end_boost_throw_excepion_resolution this pragma will survive after pre-processing the file and you can do a simple find to see what was expanded. Good Luck, Ovanes. On Tue, Mar 24, 2009 at 6:53 PM, Ovanes Markarian <om_boost@keywallet.com>wrote:
Igor,
how is BOOST_THROW_EXCEPION defined? The line might expand to error() << action_name(name); which does not throw than.
Regards, Ovanes
On Tue, Mar 24, 2009 at 6:28 PM, Igor R <boost.lists@gmail.com> wrote:
Hello all,
A function throws boost::exception as follows:
//.... typedef boost::error_info<struct tag_action, std::string> action_name; BOOST_THROW_EXCEPTION(error() << action_name(name)); return 0;
Both BOOST_NO_EXCEPTIONS and BOOST_EXCEPTION_DISABLE are *not* defined. The excpetion is not catched anywhere. However, the thread continues running! If I put breakpoint at "return 0;" it's hit, and I can continue stepping the code. I run the program under MSVC 9.0, in debug mode, and I see "First-chance exception" and "Unhandled exception" notifications issued by the debugger. Isn't it wrong behavior, or I miss something?
Thanks,
Igor'. _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
how is BOOST_THROW_EXCEPION defined? The line might expand to error() << action_name(name); which does not throw than.
It's defined as ::boost::throw_exception(x), which goes to "throw enable_current_exception(enable_error_info(e));" It *does* throw for sure, as I can see the debugger notifications for both "first-chance" and "unhandled", and I can step into exception filter in boost::thread.
participants (2)
-
Igor R
-
Ovanes Markarian