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

Last change on this file since 215 was 215, checked in by hozdoba, 10 years ago
File size: 2.4 KB
Line 
1/* ************************************************************************** *
2 *      Copyright © IPSL/LSCE, XMLIOServer, Avril 2010 - Octobre 2011         *
3 * ************************************************************************** */
4
5/**
6 * \file    exception.cpp
7 * \brief   Gestion des erreurs levées lors de l'exécution de programme (implémentation).
8 * \author  Hervé Ozdoba
9 * \version 0.4
10 * \date    9 Juin 2011
11 */
12
13// XMLIOServer headers
14#include "xmlioserver_spl.hpp"
15#include "exception.hpp"
16
17// Boost headers
18#include <boost/cast.hpp>
19
20// /////////////////////////////// Définitions ////////////////////////////// //
21
22namespace xmlioserver {
23
24   // ------------------------------ Constructeurs -----------------------------
25
26   // Constructeur simple d'une exception anonyme.
27   CException::CException(void)
28      : CObject(), desc_rethrow(true)
29   { /* Ne rien faire de plus */ }
30
31   // Constructeur simple d'une exception identifiée.
32   CException::CException(const std::string & _id)
33      : CObject(_id), desc_rethrow(true)
34   { /* Ne rien faire de plus */ }
35
36   // Constructeur par copie.
37   CException::CException(const CException & _exception)
38      : std::basic_ios<char>()
39      , CObject(_exception.getId())
40      , std::ostringstream()
41      , desc_rethrow(false)
42   {
43      (*this) << _exception.str();
44   }
45
46   // ------------------------------- Destructeur -----------------------------
47
48   // Destructeur de l'instance.
49   CException::~CException(void)
50   {
51      if (desc_rethrow) throw (*this);
52   }
53
54   // ------------------------------- Accesseurs ------------------------------
55
56   // Retourne un message d'erreur.
57   const std::string CException::getMessage(void) const
58   {
59      std::ostringstream oss;
60      oss << "> Error [" << this->getId() << "] : " << this->str();
61      return (oss.str());
62   }
63
64   // Retourne un flux d'écriture du message d'erreur.
65   std::ostringstream &  CException::getStream(void)
66   {
67      return (*boost::polymorphic_cast<std::ostringstream*>(this));
68   }
69
70   // --------------------------- Diverses méthodes ---------------------------
71
72   // Retourne une représentation ascii de l'objet.
73   std::string CException::toString(void) const
74   {
75      return (std::string(this->getMessage()));
76   }
77
78   // Modifie l'objet en fonction d'une chaîne de caractÚre.
79   void CException::fromString(const std::string & str)
80   {
81      this->str(str);
82   }
83
84} // namespace xmlioserver
Note: See TracBrowser for help on using the repository browser.