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

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