source: XMLIO_V2/external/src/POCO/Foundation.save/Poco/ErrorHandler.h @ 80

Last change on this file since 80 was 80, checked in by ymipsl, 14 years ago

ajout lib externe

  • Property svn:eol-style set to native
File size: 4.3 KB
Line 
1//
2// ErrorHandler.h
3//
4// $Id: //poco/1.3/Foundation/include/Poco/ErrorHandler.h#2 $
5//
6// Library: Foundation
7// Package: Threading
8// Module:  ErrorHandler
9//
10// Definition of the ErrorHandler class.
11//
12// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
13// and Contributors.
14//
15// Permission is hereby granted, free of charge, to any person or organization
16// obtaining a copy of the software and accompanying documentation covered by
17// this license (the "Software") to use, reproduce, display, distribute,
18// execute, and transmit the Software, and to prepare derivative works of the
19// Software, and to permit third-parties to whom the Software is furnished to
20// do so, all subject to the following:
21//
22// The copyright notices in the Software and this entire statement, including
23// the above license grant, this restriction and the following disclaimer,
24// must be included in all copies of the Software, in whole or in part, and
25// all derivative works of the Software, unless such copies or derivative
26// works are solely in the form of machine-executable object code generated by
27// a source language processor.
28//
29// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
32// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
33// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
34// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
35// DEALINGS IN THE SOFTWARE.
36//
37
38
39#ifndef Foundation_ErrorHandler_INCLUDED
40#define Foundation_ErrorHandler_INCLUDED
41
42
43#include "Poco/Foundation.h"
44#include "Poco/Exception.h"
45#include "Poco/Mutex.h"
46
47
48namespace Poco {
49
50
51class Foundation_API ErrorHandler
52        /// This is the base class for thread error handlers.
53        ///
54        /// An unhandled exception that causes a thread to terminate is usually
55        /// silently ignored, since the class library cannot do anything meaningful
56        /// about it.
57        ///
58        /// The Thread class provides the possibility to register a
59        /// global ErrorHandler that is invoked whenever a thread has
60        /// been terminated by an unhandled exception.
61        /// The ErrorHandler must be derived from this class and can
62        /// provide implementations of all three exception() overloads.
63        ///
64        /// The ErrorHandler is always invoked within the context of
65        /// the offending thread.
66{
67public:
68        ErrorHandler();
69                /// Creates the ErrorHandler.
70
71        virtual ~ErrorHandler();
72                /// Destroys the ErrorHandler.
73
74        virtual void exception(const Exception& exc);
75                /// Called when a Poco::Exception (or a subclass)
76                /// caused the thread to terminate.
77                ///
78                /// This method should not throw any exception - it would
79                /// be silently ignored.
80                ///
81                /// The default implementation just breaks into the debugger.
82               
83        virtual void exception(const std::exception& exc);
84                /// Called when a std::exception (or a subclass)
85                /// caused the thread to terminate.             
86                ///
87                /// This method should not throw any exception - it would
88                /// be silently ignored.
89                ///
90                /// The default implementation just breaks into the debugger.
91
92        virtual void exception();
93                /// Called when an exception that is neither a
94                /// Poco::Exception nor a std::exception caused
95                /// the thread to terminate.
96                ///
97                /// This method should not throw any exception - it would
98                /// be silently ignored.
99                ///
100                /// The default implementation just breaks into the debugger.
101               
102        static void handle(const Exception& exc);
103                /// Invokes the currently registered ErrorHandler.
104               
105        static void handle(const std::exception& exc);
106                /// Invokes the currently registered ErrorHandler.
107       
108        static void handle();
109                /// Invokes the currently registered ErrorHandler.
110       
111        static ErrorHandler* set(ErrorHandler* pHandler);
112                /// Registers the given handler as the current error handler.
113                ///
114                /// Returns the previously registered handler.
115
116        static ErrorHandler* get();
117                /// Returns a pointer to the currently registered
118                /// ErrorHandler.
119
120protected:     
121        static ErrorHandler* defaultHandler();
122                /// Returns the default ErrorHandler.   
123               
124private:
125        static ErrorHandler* _pHandler;
126        static FastMutex     _mutex;
127};
128
129
130//
131// inlines
132//
133inline ErrorHandler* ErrorHandler::get()
134{
135        return _pHandler;
136}
137
138
139} // namespace Poco
140
141
142#endif // Foundation_ErrorHandler_INCLUDED
Note: See TracBrowser for help on using the repository browser.