CLHEP VERSION Reference Documentation
CLHEP Home Page
CLHEP Documentation
CLHEP Bug Reports
Main Page
Namespaces
Classes
Files
File List
File Members
Exceptions
src
ZMthrow.cc
Go to the documentation of this file.
1
// ----------------------------------------------------------------------
2
//
3
// ZMthrow.cc -- implementation of ZMthrow
4
//
5
// ZMthrow_() is invoked by the ZMthrow(x) macro, which supplies the lineNum
6
// and file arguments as well as the constructed ZOOM exception object.
7
//
8
// Revision History:
9
// 970910 MF Initial version
10
// 970916 WEB Updated per code review
11
// 970917 WEB Updated per code review 2
12
// 980615 WEB Added namespace support
13
//
14
// ----------------------------------------------------------------------
15
16
17
#include "
CLHEP/Exceptions/ZMthrow.h
"
18
#include "
CLHEP/Exceptions/ZMexSeverity.h
"
19
#include "
CLHEP/Exceptions/ZMexception.h
"
20
#include "
CLHEP/Exceptions/ZMerrno.h
"
21
22
23
namespace
zmex {
24
25
26
27
//**********************
28
//
29
// ZMthrow_ ()
30
//
31
//**********************
32
33
ZMexAction
ZMthrow_
(
34
const
ZMexception
& userException
35
,
int
lineNum
36
,
const
char
fileName[]
37
) {
38
39
// a) Place the lineNum and fileName information into the exception object.
40
41
// b) Cause the handler to be invoked via x.X::handleMe().
42
// That finds the handler, puts the handler name into the exception,
43
// and invokes the handler's takeCareOf() method, passing it the
44
// exception object so that, if any parent handlers are involved,
45
// you later have x.Y::handleMe() invoked, where Y is an ancestor of X.
46
47
// c) If the exception is of severity ZMexERROR or higher, copy the
48
// exception object onto ZMerrno.
49
50
// d) Return the result of the handler's decision.
51
52
// The following are done elsewhere, so ZMthrow_ does not have to:
53
// The constructor for ZMexception takes care of incrementing
54
// the static count, and saving its value.
55
// The handler notifies the exception object of the handler's
56
// decision whether to have the object be thrown or ignored.
57
// Identifying the logger to call, and saving that information,
58
// in this exception instance, is done by x.logMe()
59
// called by handler, assuming the handler decides to log.
60
61
userException.
location
( lineNum, fileName );
// (a)
62
63
ZMexAction
whatToDo = userException.
handleMe
();
// (b)
64
65
if
( userException.
severity
() >=
ZMexERROR
)
// (c)
66
ZMerrno
.
write
( userException );
67
68
return
whatToDo;
// (d)
69
70
}
// ZMthrow_()
71
72
}
// namespace zmex
Generated on Mon May 6 2013 04:04:12 for CLHEP by
1.8.1.2