File: verbose_terminate_handler_fail.cpp

package info (click to toggle)
boost1.90 1.90.0-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 593,120 kB
  • sloc: cpp: 4,190,908; xml: 196,648; python: 34,618; ansic: 23,145; asm: 5,468; sh: 3,774; makefile: 1,161; perl: 1,020; sql: 728; ruby: 676; yacc: 478; java: 77; lisp: 24; csh: 6
file content (50 lines) | stat: -rw-r--r-- 1,473 bytes parent folder | download | duplicates (11)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright 2022 Peter Dimov
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt

#if defined(_MSC_VER)
# pragma warning(disable: 4702) // unreachable code
# pragma warning(disable: 4530) // C++ exception handler used
# pragma warning(disable: 4577) // 'noexcept' used
#endif

#include <boost/core/verbose_terminate_handler.hpp>
#include <boost/throw_exception.hpp>
#include <exception>
#include <stdlib.h>
#if defined(_MSC_VER) && defined(_CPPLIB_VER) && defined(_DEBUG)
# include <crtdbg.h>
#endif

int main()
{
#if defined(_MSC_VER) && (_MSC_VER > 1310)
    // disable message boxes on assert(), abort()
    ::_set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT);
#endif
#if defined(_MSC_VER) && defined(_CPPLIB_VER) && defined(_DEBUG)
    // disable message boxes on iterator debugging violations
    _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE );
    _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDERR );
#endif

    std::set_terminate( boost::core::verbose_terminate_handler );

    boost::throw_with_location( std::exception() );
}

#if defined(BOOST_NO_EXCEPTIONS)

void boost::throw_exception( std::exception const& x )
{
    std::fprintf( stderr, "throw_exception: %s\n\n", x.what() );
    std::terminate();
}

void boost::throw_exception( std::exception const& x, boost::source_location const& )
{
    std::fprintf( stderr, "throw_exception: %s\n\n", x.what() );
    std::terminate();
}

#endif