source: trunk/environments/g4py/source/global/pyG4ExceptionHandler.cc @ 1337

Last change on this file since 1337 was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 4.0 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26// $Id: pyG4ExceptionHandler.cc,v 1.1 2006/11/21 05:58:33 kmura Exp $
27// $Name: geant4-09-04-beta-01 $
28// ====================================================================
29//   pyG4ExceptionHandler.cc
30//
31//                                         2005 Q
32// ====================================================================
33#include <boost/python.hpp>
34#include "G4VExceptionHandler.hh"
35#include "G4StateManager.hh"
36
37using namespace boost::python;
38
39// ====================================================================
40// Python Exception Handler
41// ====================================================================
42class PyG4ExceptionHandler : public G4VExceptionHandler {
43public:
44  PyG4ExceptionHandler():G4VExceptionHandler() {
45    G4StateManager* sm= G4StateManager::GetStateManager();
46    sm-> SetExceptionHandler(this);
47  }
48  ~PyG4ExceptionHandler() { }
49
50  G4bool Notify(const char* originOfException,
51                const char* exceptionCode,
52                G4ExceptionSeverity severity,
53                const char* description) {
54
55    G4cerr << "*** G4Exception : " << exceptionCode << G4endl;
56    G4cerr << "      issued by : " << originOfException << G4endl;
57    G4cerr << description << G4endl;
58    G4cerr << G4endl << "Severity : ";
59
60    switch(severity) {
61    case FatalException:
62      PyErr_SetString(PyExc_AssertionError,
63                      "*** Fatal Exception ***");
64      PyErr_Print();
65      break;
66
67    case FatalErrorInArgument:
68      PyErr_SetString(PyExc_ValueError,
69                      "*** Fatal Error In Argument ***");
70      PyErr_Print();
71
72    case RunMustBeAborted:
73      PyErr_SetString(PyExc_RuntimeError,
74                      "*** Run Must Be Aborted ***");
75      PyErr_Print();
76      break;
77
78    case EventMustBeAborted:
79      PyErr_SetString(PyExc_RuntimeError,
80                      "*** Event Must Be Aborted ***");
81      PyErr_Print();
82      break;
83
84    default:
85      PyErr_Warn(PyExc_RuntimeWarning,
86                 "*** This is just a warning message. ***");
87      break;
88    }
89
90    G4cerr << G4endl;
91
92    // anyway, no abort.
93    return false;
94  }
95};
96
97// ====================================================================
98// module definition
99// ====================================================================
100void export_G4ExceptionHandler()
101{
102  class_<PyG4ExceptionHandler, boost::noncopyable>
103    ("G4ExceptionHandler", "exception handler")
104    ;
105}
Note: See TracBrowser for help on using the repository browser.