PCL
ErrorHandler.h
Go to the documentation of this file.
1
// ____ ______ __
2
// / __ \ / ____// /
3
// / /_/ // / / /
4
// / ____// /___ / /___ PixInsight Class Library
5
// /_/ \____//_____/ PCL 2.7.0
6
// ----------------------------------------------------------------------------
7
// pcl/ErrorHandler.h - Released 2024-06-18T15:48:54Z
8
// ----------------------------------------------------------------------------
9
// This file is part of the PixInsight Class Library (PCL).
10
// PCL is a multiplatform C++ framework for development of PixInsight modules.
11
//
12
// Copyright (c) 2003-2024 Pleiades Astrophoto S.L. All Rights Reserved.
13
//
14
// Redistribution and use in both source and binary forms, with or without
15
// modification, is permitted provided that the following conditions are met:
16
//
17
// 1. All redistributions of source code must retain the above copyright
18
// notice, this list of conditions and the following disclaimer.
19
//
20
// 2. All redistributions in binary form must reproduce the above copyright
21
// notice, this list of conditions and the following disclaimer in the
22
// documentation and/or other materials provided with the distribution.
23
//
24
// 3. Neither the names "PixInsight" and "Pleiades Astrophoto", nor the names
25
// of their contributors, may be used to endorse or promote products derived
26
// from this software without specific prior written permission. For written
27
// permission, please contact info@pixinsight.com.
28
//
29
// 4. All products derived from this software, in any form whatsoever, must
30
// reproduce the following acknowledgment in the end-user documentation
31
// and/or other materials provided with the product:
32
//
33
// "This product is based on software from the PixInsight project, developed
34
// by Pleiades Astrophoto and its contributors (https://pixinsight.com/)."
35
//
36
// Alternatively, if that is where third-party acknowledgments normally
37
// appear, this acknowledgment must be reproduced in the product itself.
38
//
39
// THIS SOFTWARE IS PROVIDED BY PLEIADES ASTROPHOTO AND ITS CONTRIBUTORS
40
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
41
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PLEIADES ASTROPHOTO OR ITS
43
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
44
// EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, BUSINESS
45
// INTERRUPTION; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; AND LOSS OF USE,
46
// DATA OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49
// POSSIBILITY OF SUCH DAMAGE.
50
// ----------------------------------------------------------------------------
51
52
#ifndef __PCL_ErrorHandler_h
53
#define __PCL_ErrorHandler_h
54
56
57
#include <
pcl/Defs.h
>
58
59
#include <
pcl/Exception.h
>
60
61
#include <new>
// std::bad_alloc
62
63
// ----------------------------------------------------------------------------
64
65
#ifdef __PCL_SILENTLY_REPLACE_USER_ERROR_MACROS
66
67
#undef ERROR_HANDLER
68
#undef ERROR_CLEANUP
69
70
#else
71
72
#ifdef ERROR_HANDLER
73
#error ERROR_HANDLER macro: Already defined!
74
#endif
75
76
#ifdef ERROR_CLEANUP
77
#error ERROR_CLEANUP macro: Already defined!
78
#endif
79
80
#endif
81
82
// ----------------------------------------------------------------------------
83
88
// ----------------------------------------------------------------------------
89
99
#define ERROR_HANDLER \
100
catch ( pcl::FatalError& ) \
101
{ \
102
/* Launch fatal errors to the hyperspace... */
\
103
throw; \
104
} \
105
catch ( pcl::ProcessAborted& ) \
106
{ \
107
/* Abort process: Let the PI application do the GUI output */
\
108
} \
109
catch ( pcl::CaughtException& ) \
110
{ \
111
/* Exceptions already caught and managed: simply ignore them */
\
112
} \
113
catch ( pcl::Exception& x ) \
114
{ \
115
/* Other PCL exceptions */
\
116
x.Show(); \
117
} \
118
catch ( pcl::String& s ) \
119
{ \
120
/* Nonstandard ways of throwing things... */
\
121
try \
122
{ \
123
throw pcl::Error( s ); \
124
} \
125
catch ( pcl::Exception& x ) \
126
{ \
127
x.Show(); \
128
} \
129
} \
130
catch ( std::bad_alloc& ) \
131
{ \
132
/* Standard bad allocation exception */
\
133
try \
134
{ \
135
throw pcl::Error( "Out of memory"
); \
136
} \
137
catch ( pcl::Exception& x ) \
138
{ \
139
x.Show(); \
140
} \
141
} \
142
catch ( ... ) \
143
{ \
144
/* Catch-all */
\
145
try \
146
{ \
147
throw pcl::Error( "Unknown exception"
); \
148
} \
149
catch ( pcl::Exception& x ) \
150
{ \
151
x.Show(); \
152
} \
153
}
154
155
// ----------------------------------------------------------------------------
156
167
#define ERROR_CLEANUP( cleanup_code ) \
168
catch ( ... ) \
169
{ \
170
cleanup_code; \
171
\
172
try \
173
{ \
174
throw; \
175
} \
176
ERROR_HANDLER \
177
}
178
179
// ----------------------------------------------------------------------------
180
181
#endif
// __PCL_ErrorHandler_h
182
183
// ----------------------------------------------------------------------------
184
// EOF pcl/ErrorHandler.h - Released 2024-06-18T15:48:54Z
Defs.h
Exception.h
ErrorHandler.h
Generated on Wed Jul 3 2024 16:34:47 for PCL by
1.9.1