Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ArcaneException.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ArcaneException.h (C) 2000-2024 */
9/* */
10/* Exceptions lancées par Arcane. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ARCANEEXCEPTION_H
13#define ARCANE_ARCANEEXCEPTION_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Exception.h"
18#include "arcane/utils/String.h"
19
20#include "arcane/ArcaneTypes.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27class IVariable;
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31/*!
32 * \internal
33 * \brief Exception sur un identifiant non valide.
34 *
35 * Cette exception est envoyée à chaque fois qu'un identifiant non valide
36 * est utilisé dans l'architecture.
37
38 Les règles suivantes doivent être respectées pour qu'un identifiant soit
39 valide:
40
41 \arg il doit comporter au moins un caractère.
42 \arg il doit commencer par un caractère alphabétique (a-zA-Z),
43 \arg il doit se poursuivre par une suite de caractère alphabétique, de chiffre
44 ou le caractère souligné '_'.
45 */
46class ARCANE_CORE_EXPORT BadIDException
47: public Exception
48{
49 public:
50
51 /*!
52 * Construit une exception liée au gestionnaire \a m, issue de la fonction
53 * \a where et avec le nom invalide \a invalid_name.
54 */
55 BadIDException(const String& where,const String& invalid_name);
56 ~BadIDException() ARCANE_NOEXCEPT override {}
57
58 public:
59
60 void explain(std::ostream& m) const override;
61
62 private:
63
64 String m_invalid_name; //!< Identifiant invalide.
65};
66
67/*---------------------------------------------------------------------------*/
68/*---------------------------------------------------------------------------*/
69/*!
70 * \internal
71 * \brief Exception sur un numéro d'entité non valide.
72 *
73 Cette exception est envoyée à chaque fois qu'un numéro d'entité (qu'il soit
74 local ou global) est non valide.
75 */
76class ARCANE_CORE_EXPORT BadItemIdException
77: public Exception
78{
79 public:
80
81 /*!
82 * \brief Construit une exception.
83
84 Construit une exception liée au gestionnaire de message \a m,
85 issue de la fonction \a where et avec le numéro invalide \a id.
86 */
87 BadItemIdException(const String& where,Integer bad_id);
88 ~BadItemIdException() ARCANE_NOEXCEPT override {}
89
90 public:
91
92 void explain(std::ostream& m) const override;
93
94 private:
95
96 Integer m_bad_id; //!< Numéro invalide.
97};
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101/*!
102 * \internal
103 * \brief Exception lorsqu'une erreur interne survient.
104 */
105class ARCANE_CORE_EXPORT InternalErrorException
106: public Exception
107{
108 public:
109
110 InternalErrorException(const String& where,const String& why);
111 InternalErrorException(const TraceInfo& where,const String& why);
112 InternalErrorException(const InternalErrorException& ex) ARCANE_NOEXCEPT;
113 ~InternalErrorException() ARCANE_NOEXCEPT override {}
114
115 public:
116
117 void explain(std::ostream& m) const override;
118
119 private:
120
121 String m_why;
122};
123
124/*---------------------------------------------------------------------------*/
125/*---------------------------------------------------------------------------*/
126/*!
127 * \internal
128 * \brief Exception sur un genre/type de variable non valide.
129 *
130 * Cette exception est envoyée lorsqu'on essaye de référencer une variable
131 * qui existe déjà dans un autre module avec un genre ou un type
132 * différent.
133 */
134class ARCANE_CORE_EXPORT BadVariableKindTypeException
135: public Exception
136{
137 public:
138
139 BadVariableKindTypeException(const TraceInfo& where,IVariable* valid_var,
140 eItemKind kind,eDataType datatype,int dimension);
141 ~BadVariableKindTypeException() ARCANE_NOEXCEPT override {}
142
143 public:
144
145 void explain(std::ostream& m) const override;
146
147 private:
148
149 IVariable *m_valid_var;
150 eItemKind m_item_kind;
151 eDataType m_data_type;
152 int m_dimension;
153};
154
155/*---------------------------------------------------------------------------*/
156/*---------------------------------------------------------------------------*/
157/*!
158 * \internal
159 * \brief Exception sur un nom de groupe d'items de variable partielle non valide.
160 *
161 * Cette exception est envoyée lorsqu'on essaye de référencer une variable partielle
162 * qui existe déjà dans un autre module avec un nom de groupe d'items
163 * différent.
164 */
166: public Exception
167{
168 public:
169
171 const String& item_group_name);
172 ~BadPartialVariableItemGroupNameException() ARCANE_NOEXCEPT override {}
173
174 public:
175
176 void explain(std::ostream& m) const override;
177
178 private:
179
180 IVariable *m_valid_var;
181 String m_item_group_name;
182};
183
184
185/*---------------------------------------------------------------------------*/
186/*---------------------------------------------------------------------------*/
187/*!
188 * \internal
189 * \brief Exception lorsqu'une entité du maillage n'est pas d'un type
190 * connu.
191 */
192class ARCANE_CORE_EXPORT UnknownItemTypeException
193: public Exception
194{
195 public:
196
197 UnknownItemTypeException(const String& where,Integer nb_node,Integer item_id);
198 UnknownItemTypeException(const UnknownItemTypeException& ex) ARCANE_NOEXCEPT;
199 ~UnknownItemTypeException() ARCANE_NOEXCEPT override {}
200
201 public:
202
203 void explain(std::ostream& m) const override;
204
205 private:
206
207 Integer m_nb_node;
208 Integer m_item_id;
209};
210
211/*---------------------------------------------------------------------------*/
212/*---------------------------------------------------------------------------*/
213/*!
214 * \internal
215 * \brief Exception lorsqu'on essaie de déréférencer un pointer nul.
216 */
217class ARCANE_CORE_EXPORT BadReferenceException
218: public Exception
219{
220 public:
221
222 explicit BadReferenceException(const String& where);
223 ~BadReferenceException() ARCANE_NOEXCEPT override {}
224
225 public:
226
227 void explain(std::ostream& m) const override;
228
229 private:
230};
231
232/*---------------------------------------------------------------------------*/
233/*---------------------------------------------------------------------------*/
234/*!
235 * \internal
236 * \brief Exception dans un lecteur ou écrivain.
237 */
238class ARCANE_CORE_EXPORT ReaderWriterException
239: public Exception
240{
241 public:
242
243 ReaderWriterException(const String& where,const String& message);
244 ReaderWriterException(const TraceInfo& where,const String& message);
245 ReaderWriterException(const ReaderWriterException& ex) ARCANE_NOEXCEPT;
246 ~ReaderWriterException() ARCANE_NOEXCEPT override {}
247
248 public:
249
250 void explain(std::ostream& m) const override;
251};
252
253/*---------------------------------------------------------------------------*/
254/*---------------------------------------------------------------------------*/
255/*!
256 * \internal
257 * \brief Exception dans une assertion.
258 */
259class ARCANE_CORE_EXPORT AssertionException
260: public Exception
261{
262 public:
263 /*!
264 * Construit une exception issue de la fonction \a where.
265 */
266 explicit AssertionException(const TraceInfo& where);
267
268 /*!
269 * Construit une exception issue de la fonction \a where.
270 * La valeur attendue dans l'assertion était \a expected, le résultat obtenu \a actual.
271 */
272 AssertionException(const TraceInfo& where, const String& expected, const String& actual);
273
274 public:
275
276 void explain(std::ostream& m) const override;
277 //! Fichier de l'exception
278 const char* file() const { return m_file; }
279 //! Ligne de l'exception
280 int line() const { return m_line; }
281
282 public:
283
284 using Exception::where;
285 using Exception::message;
286
287 private:
288
289 const char* m_file;
290 int m_line;
291};
292
293/*---------------------------------------------------------------------------*/
294/*---------------------------------------------------------------------------*/
295
296} // End namespace Arcane
297
298/*---------------------------------------------------------------------------*/
299/*---------------------------------------------------------------------------*/
300
301#endif
const char * file() const
Fichier de l'exception.
int line() const
Ligne de l'exception.
Classe de base d'une exception.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.
eDataType
Type d'une donnée.
Definition DataTypes.h:39