source: XIOS/dev/dev_rv/src4/xmlio/exception.hpp @ 1226

Last change on this file since 1226 was 256, checked in by hozdoba, 13 years ago

Ajout de classes pour la version 4

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