source: XMLIO_V2/dev/dev_rv/src4/xmlio/exception.hpp @ 216

Last change on this file since 216 was 216, checked in by hozdoba, 10 years ago
File size: 3.6 KB
Line 
1/* ************************************************************************** *
2 *      Copyright © IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
3 * ************************************************************************** */
4
5#ifndef __EXCEPTION_HPP__
6#define __EXCEPTION_HPP__
7
8#ifndef __XIOS_NO_EXTERN
9
10// C++ standard headers
11#  include <sstream>
12
13#endif // __XIOS_NO_EXTERN
14
15// XMLIOServer headers
16#include "object.hpp"
17
18
19/**
20 * \file    exception.hpp
21 * \brief   Gestion des erreurs levées lors de l'exécution de programme (entête).
22 * \author  Hervé Ozdoba
23 * \version 0.4
24 * \date    9 Juin 2011
25 */
26
27// ////////////////////////////// Déclarations ///////////////////////////// //
28
29namespace xmlioserver
30{
31  /**
32   * \class CException
33   * \brief Classe de gestion des événnements inhabituels qui surviennent lors
34   * de l'exécution du programme en production.
35   * \see XIOS_ERROR(id, message)
36   *
37   * <i> Exemple de levée d'exception: </i>
38   * \code
39   * //> LÚve une exception nommée 'mon_exception' contenant un message détaillé.
40   * CException("mon_exception").getStream()
41   * << "Ceci un message décrivant le problÚme rencontré durant l'exécution";
42   * \endcode
43   * <i> Exemple de traitement d'exception: </i>
44   * \code
45   * //> Traitement une exception levée lors de l'exécution d'un code.
46   * try
47   * {
48   *    // Code générant une exception  ...
49   * }
50   * catch (xios::CException & _exception)
51   * {
52   *    // Affichage du message d'erreur et arrêt du programme.
53   *    std::cerr << _exception.getMessage() << std::endl;
54   *    exit(-1);
55   * }
56   * \endcode
57   */
58   class CException
59      : private CObject, public std::ostringstream
60   {
61         typedef CObject SuperClass;                  /*!< Redéfinition de CObject. */
62         typedef std::ostringstream SuperClassStream; /*!< Redéfinition de std::ostringstream. */
63
64      public : // Constructeurs
65
66         //! \brief Constructeur simple d'une exception anonyme.
67         CException(void);
68
69         /*!
70          * \brief Constructeur simple d'une exception identifiée.
71          * \param _id : une chaîne de caractÚre permettant d'identifier l'exception.
72          */
73         explicit CException(const std::string & _id);
74
75         /*!
76          * \brief Constructeur par copie .
77          * \param _exception : référence de l'exception à copier.
78          */
79         CException(const CException & _exception);
80
81         /*!
82          * \brief Constructeur par copie.
83          * \param _exception_ptr : le pointeur sur l'exception à copier.
84          */
85         CException(const CException * const _exception_ptr); // NIY
86
87      public : // Accesseurs
88
89         /*!
90          * \brief Retourne un flux d'écriture du message d'erreur.
91          * \return un flux d'entrée permettant de décrire l'événement survenu.
92          */
93         SuperClassStream & getStream(void);
94
95         /*!
96          * \brief Retourne un message d'erreur.
97          * \return une chaîne de caractÚre décrivant l'événement survenu.
98          */
99         const std::string getMessage(void) const;
100         
101      public : // Destructeur
102       
103         //! \brief Destructeur de l'objet.
104         virtual ~CException(void);
105
106      public : // Autre
107
108         virtual std::string toString(void) const;
109         virtual void fromString(const std::string & _str);
110
111      private : // Propriétés
112
113         /*!
114          * \brief Indique si l'exception doit être de nouveau levée
115          * à la destruction de l'objet courant.
116          */
117         bool desc_rethrow;
118
119   }; // CException
120
121} // namespace xmlioserver
122
123#endif  // __EXCEPTION_HPP__
124
Note: See TracBrowser for help on using the repository browser.