OVH Cloud OVH Cloud

Valeur numérique d'une exception

6 réponses
Avatar
pascal1967
Bonjour,
Existe t-il un une valeur numérique associée à chaque exception possible ?
Si oui, comment obtenir cette valeur pour une exception levée ?
Par avance merci

6 réponses

Avatar
Merlin
> Bonjour,
Existe t-il un une valeur numérique associée à chaque exception possible ?
Si oui, comment obtenir cette valeur pour une exception levée ?
Par avance merci



ça c'est la vieille école :-) une "code erreur".
Sous C# comme d'autres langages POO, c'est le type de l'exception (qui
est une instance d'une classe comme une autre) qu'il faut tester.
Certaines exceptions peuvent parfois remonter un code (exceptions
hardware ou bases de données) car le device ayant provoqué l'erreur
peut lui être encore "à l'ancienne" et ne proposer qu'un code. Mais ça
se fait de plus en plus rare.
De plus, sous C#, les exceptions sont parfois, selon leur classe,
assorties d'informations pertinentes en plus du simple message.

--

///3rL1n____
Avatar
Paul Bacelar
"pascal1967" wrote in message
news:
Bonjour,
Existe t-il un une valeur numérique associée à chaque exception possible ?
Si oui, comment obtenir cette valeur pour une exception levée ?
Par avance merci





exception ou type d'exception ?

Une exception est un objet donc convertible en un nombre via la méthode
GetHashCode() dont la valeur de retour est unique pour le programme.

Mais je ne vois pas l'intérêt, car on perd toute la richesse des exceptions
objets par rapports aux exceptions C (pas C++).

Quel est votre objectif premier, car il semble que vous vous fourvoyez dans
une solution peu réaliste.
--
Paul Bacelar
MVP VC++
Avatar
pascal1967
Bonjour,

Mon besoin concerne la gestion des exceptions lors d'insertion en base de
données.

Les problèmes potentiels (doublon sur clé primaire, etc...) remonte un
message que je souhaite 'retravaillé' car incompréhensible pour l'utilisateur
final.

Avec un switch sur un code erreur je pourrait adapté mon message utilisateur.
(je pense que SqlException propose cela avec ex.Errors.Item(0).Number)


"Paul Bacelar" a écrit :

"pascal1967" wrote in message
news:
> Bonjour,
> Existe t-il un une valeur numérique associée à chaque exception possible ?
> Si oui, comment obtenir cette valeur pour une exception levée ?
> Par avance merci
>
>

exception ou type d'exception ?

Une exception est un objet donc convertible en un nombre via la méthode
GetHashCode() dont la valeur de retour est unique pour le programme.

Mais je ne vois pas l'intérêt, car on perd toute la richesse des exceptions
objets par rapports aux exceptions C (pas C++).

Quel est votre objectif premier, car il semble que vous vous fourvoyez dans
une solution peu réaliste.
--
Paul Bacelar
MVP VC++






Avatar
Simon Mourier [SoftFluent]
S'il s'agit de vos propres exceptions que vous déclarez, vous pouvez tout à
fait leur rajouter un numéro.

Sinon, cela dépend de chaque exception. Par exemple en effet, SqlException a
des numéros, mais c'est spécifique à SqlException.

Dans l'absolu, vous n'avez pas forcément de numéro unique par "type
fonctionnel" exception. Par exemple certaines XmlException ne sont
distinguables que par le contenu du texte de l'exception (ce qui est bien
triste!)

Simon.
www.softfluent.com



"pascal1967" a écrit dans le message de news:

Bonjour,

Mon besoin concerne la gestion des exceptions lors d'insertion en base de
données.

Les problèmes potentiels (doublon sur clé primaire, etc...) remonte un
message que je souhaite 'retravaillé' car incompréhensible pour
l'utilisateur
final.

Avec un switch sur un code erreur je pourrait adapté mon message
utilisateur.
(je pense que SqlException propose cela avec ex.Errors.Item(0).Number)


"Paul Bacelar" a écrit :

"pascal1967" wrote in message
news:
> Bonjour,
> Existe t-il un une valeur numérique associée à chaque exception
> possible ?
> Si oui, comment obtenir cette valeur pour une exception levée ?
> Par avance merci
>
>

exception ou type d'exception ?

Une exception est un objet donc convertible en un nombre via la méthode
GetHashCode() dont la valeur de retour est unique pour le programme.

Mais je ne vois pas l'intérêt, car on perd toute la richesse des
exceptions
objets par rapports aux exceptions C (pas C++).

Quel est votre objectif premier, car il semble que vous vous fourvoyez
dans
une solution peu réaliste.
--
Paul Bacelar
MVP VC++








Avatar
pascal1967
je suis bien d'accord !!
bon en plus un doublon de clé renvoi une ConstraintException qui ne semble
pas pouvoir être castée en SqlException !!!
Gnarkkk



--
développeur .net
{ / www.2pInformatique.com}


"Simon Mourier [SoftFluent]" a écrit :

S'il s'agit de vos propres exceptions que vous déclarez, vous pouvez tout à
fait leur rajouter un numéro.

Sinon, cela dépend de chaque exception. Par exemple en effet, SqlException a
des numéros, mais c'est spécifique à SqlException.

Dans l'absolu, vous n'avez pas forcément de numéro unique par "type
fonctionnel" exception. Par exemple certaines XmlException ne sont
distinguables que par le contenu du texte de l'exception (ce qui est bien
triste!)

Simon.
www.softfluent.com



"pascal1967" a écrit dans le message de news:

> Bonjour,
>
> Mon besoin concerne la gestion des exceptions lors d'insertion en base de
> données.
>
> Les problèmes potentiels (doublon sur clé primaire, etc...) remonte un
> message que je souhaite 'retravaillé' car incompréhensible pour
> l'utilisateur
> final.
>
> Avec un switch sur un code erreur je pourrait adapté mon message
> utilisateur.
> (je pense que SqlException propose cela avec ex.Errors.Item(0).Number)
>
>
> "Paul Bacelar" a écrit :
>
>> "pascal1967" wrote in message
>> news:
>> > Bonjour,
>> > Existe t-il un une valeur numérique associée à chaque exception
>> > possible ?
>> > Si oui, comment obtenir cette valeur pour une exception levée ?
>> > Par avance merci
>> >
>> >
>>
>> exception ou type d'exception ?
>>
>> Une exception est un objet donc convertible en un nombre via la méthode
>> GetHashCode() dont la valeur de retour est unique pour le programme.
>>
>> Mais je ne vois pas l'intérêt, car on perd toute la richesse des
>> exceptions
>> objets par rapports aux exceptions C (pas C++).
>>
>> Quel est votre objectif premier, car il semble que vous vous fourvoyez
>> dans
>> une solution peu réaliste.
>> --
>> Paul Bacelar
>> MVP VC++
>>
>>
>>
>>





Avatar
Guillaume Davion
Pas exactement en fait.
La ConstraintException provient du Dataset, pas de SqlServer.
Si le Dataset ne posséde pas de constraint et que tu tente d'insérer
la ligne dans SqlServer, là tu auras une SqlException qui contient un
numéro d'erreur.
Par ailleurs, dans ce cas précis, les numéros d'erreur proviennent de
SqlServer, pas de .NET lui même