RESTinio
Loading...
Searching...
No Matches
suppress_exceptions.hpp
Go to the documentation of this file.
1/*
2 * RESTinio
3 */
4
12#pragma once
13
15
17
18#include <exception>
19
20namespace restinio
21{
22
23namespace utils
24{
25
26//
27// Wrappers for logging with suppressing of exceptions.
28//
29
30template< typename Logger, typename Message_Builder >
31void
33{
34 try { logger.trace( std::forward<Message_Builder>(builder) ); }
35 catch( ... ) {}
36}
37
38template< typename Message_Builder >
39void
42
43template< typename Logger, typename Message_Builder >
44void
46{
47 try { logger.info( std::forward<Message_Builder>(builder) ); }
48 catch( ... ) {}
49}
50
51template< typename Message_Builder >
52void
55
56template< typename Logger, typename Message_Builder >
57void
59{
60 try { logger.warn( std::forward<Message_Builder>(builder) ); }
61 catch( ... ) {}
62}
63
64template< typename Message_Builder >
65void
68
69template< typename Logger, typename Message_Builder >
70void
72{
73 try { logger.error( std::forward<Message_Builder>(builder) ); }
74 catch( ... ) {}
75}
76
77template< typename Message_Builder >
78void
81
91template<
92 typename Logger,
93 typename Lambda >
96 Logger && logger,
99 const char * block_description,
101 Lambda && lambda ) noexcept
102{
103 try
104 {
105 lambda();
106 }
107 catch( const std::exception & x )
108 {
109 log_error_noexcept( logger, [&] {
110 return fmt::format(
111 RESTINIO_FMT_FORMAT_STRING( "an exception in '{}': {}" ),
112 block_description, x.what() );
113 } );
114 }
115 catch( ... )
116 {
117 log_error_noexcept( logger, [&] {
118 return fmt::format(
119 RESTINIO_FMT_FORMAT_STRING( "an unknown exception in '{}'" ),
121 } );
122 }
123}
124
134template< typename Lambda >
136{
137 try
138 {
139 lambda();
140 }
141 catch( ... ) {}
142}
143
144
145} /* namespace utils */
146
147} /* namespace restinio */
148
No operation logger.
A special wrapper around fmtlib include files.
#define RESTINIO_FMT_FORMAT_STRING(s)
void suppress_exceptions(Logger &&logger, const char *block_description, Lambda &&lambda) noexcept
Helper function for execution a block of code with suppression of any exceptions raised inside that b...
void log_info_noexcept(Logger &&logger, Message_Builder &&builder) noexcept
void log_error_noexcept(Logger &&logger, Message_Builder &&builder) noexcept
void log_warn_noexcept(Logger &&logger, Message_Builder &&builder) noexcept
void suppress_exceptions_quietly(Lambda &&lambda) noexcept
Helper function for execution a block of code with suppression of any exceptions raised inside that b...
void log_trace_noexcept(Logger &&logger, Message_Builder &&builder) noexcept
run_on_this_thread_settings_t< Traits > on_this_thread()
A special marker for the case when http_server must be run on the context of the current thread.