CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

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 
21 
22 
23 namespace zmex {
24 
25 
26 ␌
27 //**********************
28 //
29 // ZMthrow_ ()
30 //
31 //**********************
32 
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
void write(const ZMexception &x)
Definition: ZMerrno.cc:66
virtual ZMexAction handleMe() const
ZMexSeverity severity() const
void location(int line, const std::string file) const
ZMexAction ZMthrow_(const ZMexception &userException, int lineNum, const char fileName[])
Definition: ZMthrow.cc:33
ZMerrnoList ZMerrno