Version: 9.16.0
Utils_ExceptHandlers.hxx
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, OPEN CASCADE
2//
3// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5//
6// This library is free software; you can redistribute it and/or
7// modify it under the terms of the GNU Lesser General Public
8// License as published by the Free Software Foundation; either
9// version 2.1 of the License, or (at your option) any later version.
10//
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14// Lesser General Public License for more details.
15//
16// You should have received a copy of the GNU Lesser General Public
17// License along with this library; if not, write to the Free Software
18// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19//
20// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21//
22
23// KERNEL Utils : common utils for KERNEL
24// File : Utils_ExceptHandlers.hxx
25// Author : Oksana Tchebanova
26// Module : KERNEL
27// $Header:
28//
29#ifndef Utils_ExceptHandlers_HeaderFile
30#define Utils_ExceptHandlers_HeaderFile
31
32#include "SALOME_Utils.hxx"
33
34#include <stdexcept>
35
36typedef void (*PVF)();
37
38class UTILS_EXPORT Unexpect { //save / retrieve unexpected exceptions treatment
40 public :
41#ifndef WIN32
43 { old = std::set_unexpected(f); }
44 ~Unexpect() { std::set_unexpected(old); }
45#else
46 Unexpect( PVF f )
47 { old = ::set_unexpected(f); }
48 ~Unexpect() { ::set_unexpected(old); }
49#endif
50};
51
52class UTILS_EXPORT Terminate {//save / retrieve terminate function
53
55 public :
56#ifndef WIN32
58 { old = std::set_terminate(f); }
59 ~Terminate() { std::set_terminate(old); }
60#else
61 Terminate( PVF f )
62 { old = ::set_terminate(f); }
63 ~Terminate() { ::set_terminate(old); }
64#endif
65};
66
67#define UNEXPECT_CATCH(FuncName, ExceptionConstructor) \
68inline void FuncName () {\
69 throw ExceptionConstructor (); \
70}
71//Example of the usage
72
73// void DTC_NotFound () {
74// throw (SALOME_DataTypeCatalog::NotFound());
75// }
76// or the same :
77//
78// UNEXPECT_CATCH( DTC_NotFound , SALOME_DataTypeCatalog::NotFound)
79// in the function body :
80// ....
81// Unexpect aCatch(DTC_NotFound) // redefinition of the unexpect exceptions handler
82// ....
83
84
85//Definitions :
86UTILS_EXPORT extern void SalomeException();
88
89#endif
#define UTILS_EXPORT
Definition: SALOME_Utils.hxx:37
void SALOME_SalomeException()
Definition: Utils_ExceptHandlers.cxx:132
void(* PVF)()
Definition: Utils_ExceptHandlers.hxx:36
void SalomeException()
Definition: Utils_ExceptHandlers.cxx:117
Definition: Utils_ExceptHandlers.hxx:52
Terminate(PVF f)
Definition: Utils_ExceptHandlers.hxx:57
~Terminate()
Definition: Utils_ExceptHandlers.hxx:59
PVF old
Definition: Utils_ExceptHandlers.hxx:54
Definition: Utils_ExceptHandlers.hxx:38
Unexpect(PVF f)
Definition: Utils_ExceptHandlers.hxx:42
PVF old
Definition: Utils_ExceptHandlers.hxx:39
~Unexpect()
Definition: Utils_ExceptHandlers.hxx:44
f
Definition: IDLparser.py:867