Logo ROOT  
Reference Guide
TError.h
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Fons Rademakers 29/07/95
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TError
13#define ROOT_TError
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// Error handling routines. //
19// //
20// This file defines a number of global error handling routines: //
21// Warning(), Error(), SysError() and Fatal(). They all take a //
22// location string (where the error happened) and a printf style format //
23// string plus vararg's. In the end these functions call an //
24// errorhanlder function. Initially, a minimal, non thread-safe handler //
25// is installed that is supposed to be replaced by the //
26// DefaultErrorHandler(), which needs to be implemented and installed //
27// by the user of TError. Normally, the default error handler is set //
28// during gROOT initialization. //
29// //
30//////////////////////////////////////////////////////////////////////////
31
32
33#include <DllImport.h> // for R__EXTERN
34#include "RtypesCore.h"
35
36#include <cstdarg>
37#include <functional>
38
39
40class TVirtualMutex;
41
42const Int_t kUnset = -1;
43const Int_t kPrint = 0;
44const Int_t kInfo = 1000;
45const Int_t kWarning = 2000;
46const Int_t kError = 3000;
47const Int_t kBreak = 4000;
48const Int_t kSysError = 5000;
49const Int_t kFatal = 6000;
50
51
52// TROOT sets the error ignore level handler, the system error message handler, and the error abort handler on
53// construction such that the "Root.ErrorIgnoreLevel" environment variable is used for the ignore level
54// and gSystem is used to generate a stack trace on abort.
55namespace ROOT {
56namespace Internal {
57
58/// Retrieves the error string associated with the last system error.
60
62/// Returns the previous system error message handler
64
65void MinimalErrorHandler(int level, Bool_t abort, const char *location, const char *msg);
66
67} // namespace Internal
68} // namespace ROOT
69
70typedef void (*ErrorHandlerFunc_t)(int level, Bool_t abort, const char *location,
71 const char *msg);
72
73extern "C" void ErrorHandler(int level, const char *location, const char *fmt, std::va_list va);
74
75extern void DefaultErrorHandler(int level, Bool_t abort, const char *location, const char *msg);
76
79
80extern void Info(const char *location, const char *msgfmt, ...)
81#if defined(__GNUC__) && !defined(__CINT__)
82__attribute__((format(printf, 2, 3)))
83#endif
84;
85extern void Warning(const char *location, const char *msgfmt, ...)
86#if defined(__GNUC__) && !defined(__CINT__)
87__attribute__((format(printf, 2, 3)))
88#endif
89;
90extern void Error(const char *location, const char *msgfmt, ...)
91#if defined(__GNUC__) && !defined(__CINT__)
92__attribute__((format(printf, 2, 3)))
93#endif
94;
95extern void Break(const char *location, const char *msgfmt, ...)
96#if defined(__GNUC__) && !defined(__CINT__)
97__attribute__((format(printf, 2, 3)))
98#endif
99;
100extern void SysError(const char *location, const char *msgfmt, ...)
101#if defined(__GNUC__) && !defined(__CINT__)
102__attribute__((format(printf, 2, 3)))
103#endif
104;
105extern void Fatal(const char *location, const char *msgfmt, ...)
106#if defined(__GNUC__) && !defined(__CINT__)
107__attribute__((format(printf, 2, 3)))
108#endif
109;
110
111extern void AbstractMethod(const char *method);
112extern void MayNotUse(const char *method);
113extern void Obsolete(const char *function, const char *asOfVers, const char *removedFromVers);
114
117
118#define R__ASSERT(e) \
119 do { \
120 if (!(e)) ::Fatal("", kAssertMsg, _QUOTE_(e), __LINE__, __FILE__); \
121 } while (false)
122#define R__CHECK(e) \
123 do { \
124 if (!(e)) ::Warning("", kCheckMsg, _QUOTE_(e), __LINE__, __FILE__); \
125 } while (false)
126
130
131#endif
#define R__EXTERN
Definition: DllImport.h:27
typedef void(GLAPIENTRYP _GLUfuncptr)(void)
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:45
bool Bool_t
Definition: RtypesCore.h:63
void DefaultErrorHandler(int level, Bool_t abort, const char *location, const char *msg)
The default error handler function.
R__EXTERN const char * kAssertMsg
Definition: TError.h:115
const Int_t kPrint
Definition: TError.h:43
const Int_t kError
Definition: TError.h:46
const Int_t kSysError
Definition: TError.h:48
R__EXTERN const char * kCheckMsg
Definition: TError.h:116
void ErrorHandler(int level, const char *location, const char *fmt, std::va_list va)
General error handler function. It calls the user set error handler.
Definition: TError.cxx:111
ErrorHandlerFunc_t GetErrorHandler()
Returns the current error handler function.
Definition: TError.cxx:102
void Info(const char *location, const char *msgfmt,...)
Use this function for informational messages.
Definition: TError.cxx:220
const Int_t kUnset
Definition: TError.h:42
const Int_t kFatal
Definition: TError.h:49
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Definition: TError.cxx:187
const Int_t kBreak
Definition: TError.h:47
R__EXTERN Int_t gErrorAbortLevel
Definition: TError.h:128
void AbstractMethod(const char *method)
This function can be used in abstract base classes in case one does not want to make the class a "rea...
Definition: TError.cxx:161
const Int_t kWarning
Definition: TError.h:45
R__EXTERN Bool_t gPrintViaErrorHandler
Definition: TError.h:129
void SysError(const char *location, const char *msgfmt,...)
Use this function in case a system (OS or GUI) related error occurred.
Definition: TError.cxx:198
void(* ErrorHandlerFunc_t)(int level, Bool_t abort, const char *location, const char *msg)
Definition: TError.h:70
void Break(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
Definition: TError.cxx:209
void MayNotUse(const char *method)
This function can be used in classes that should override a certain function, but in the inherited cl...
Definition: TError.cxx:170
R__EXTERN Int_t gErrorIgnoreLevel
Definition: TError.h:127
void Obsolete(const char *function, const char *asOfVers, const char *removedFromVers)
Use this function to declare a function obsolete.
Definition: TError.cxx:179
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
Definition: TError.cxx:231
ErrorHandlerFunc_t SetErrorHandler(ErrorHandlerFunc_t newhandler)
Set an errorhandler function. Returns the old handler.
Definition: TError.cxx:92
void Fatal(const char *location, const char *msgfmt,...)
Use this function in case of a fatal error. It will abort the program.
Definition: TError.cxx:245
const Int_t kInfo
Definition: TError.h:44
This class implements a mutex interface.
Definition: TVirtualMutex.h:32
std::function< const char *()> ErrorSystemMsgHandlerFunc_t
Retrieves the error string associated with the last system error.
Definition: TError.h:59
void MinimalErrorHandler(int level, Bool_t abort, const char *location, const char *msg)
A very simple error handler that is usually replaced by the TROOT default error handler.
Definition: TError.cxx:69
ErrorSystemMsgHandlerFunc_t SetErrorSystemMsgHandler(ErrorSystemMsgHandlerFunc_t h)
Returns the previous system error message handler.
Definition: TError.cxx:59
ErrorSystemMsgHandlerFunc_t GetErrorSystemMsgHandler()
Definition: TError.cxx:54
void function(const Char_t *name_, T fun, const Char_t *docstring=0)
Definition: RExports.h:152
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...