Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

BOOST_<level>_NO_THROW

BOOST_WARN_NO_THROW(expression);
BOOST_CHECK_NO_THROW(expression);
BOOST_REQUIRE_NO_THROW(expression);

These assertions validate that the execution of expression does not throw any exception. To that extent, all possible exception are caught by assertion itself and no exception is propagated to the test body.

[Tip] Tip

It is possible to test for complex expressions with the use of constructs such as do { /* ... */} while(0) block.

Example: BOOST_<level>_NO_THROW usage

Code

#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>

class my_exception{};

void some_func( int i ) { if( i<0 ) throw my_exception(); }

BOOST_AUTO_TEST_CASE( test )
{
    BOOST_CHECK_NO_THROW( some_func(-1) );
    BOOST_CHECK_NO_THROW(
      do {
        int i(-2);
        some_func(i);
      } while(0)
    );
}

Output

> example
Running 1 test case...
../doc/examples/exception_nothrow.run-fail.cpp:18: error: in "test": exception thrown by some_func(-1)
../doc/examples/exception_nothrow.run-fail.cpp:24: error: in "test": exception thrown by do { int i(-2); some_func(i);
 } while(0)

*** 2 failures are detected in the test module "example"

See also:


PrevUpHomeNext