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