Assure.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 #include "squid.h"
10 #include "base/Assure.h"
11 #include "base/TextException.h"
12 #include "debug/Stream.h"
13 
14 [[ noreturn ]] void
15 ReportAndThrow_(const int debugLevel, const char *description, const SourceLocation &location)
16 {
17  const TextException ex(description, location);
18  const auto label = debugLevel <= DBG_IMPORTANT ? "ERROR: Squid BUG: " : "";
19  // TODO: Consider also printing the number of BUGs reported so far. It would
20  // require GC, but we could even print the number of same-location reports.
21  debugs(0, debugLevel, label << ex);
22  throw ex;
23 }
24 
void ReportAndThrow_(const int debugLevel, const char *description, const SourceLocation &location)
Definition: Assure.cc:15
a source code location that is cheap to create, copy, and store
Definition: Here.h:29
an std::runtime_error with thrower location info
Definition: TextException.h:20
#define DBG_IMPORTANT
Definition: Stream.h:38
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:192

 

Introduction

Documentation

Support

Miscellaneous