Bonjour
j'aimerais savoir si il ya un moyen de tester le type d'une exception ?
Si oui, comment ?
Merci
Version imprimable
Bonjour
j'aimerais savoir si il ya un moyen de tester le type d'une exception ?
Si oui, comment ?
Merci
Tu peux surement utiliser GetType():
http://msdn.microsoft.com/fr-fr/libr...pe(VS.80).aspx
j'ai déja essayé un code qui ressemble à celui-ci
à l'exécution test est égal à : Exception.Citation:
try{
.......
.......
}
catch(Exception ex)
{
string test = ex.GetType().ToString();
}
Or, j'aimerais savoir si il s'agi d'un SQLException, ou autres...
Ok je ne pense pas que ce soit possible.
Le seul moyen (à ma connaissance, donc je me trompe surement :lol:) est de catch toutes les exceptions possibles...
Et si tu fais ca, est ce que ca correspond à ce que tu veux?
Code:
1
2
3
4
5 catch(Exception ex) { string test = ex.Message; }
Salut.
Tu peux utiliser le mot clé is.
Exemple :
Ça affiche :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class Test { static void Main(string[] args) { try { testExceptionType(); } catch (Exception exception) { Console.WriteLine("Exception is a NotImplementedException one ? {0}", (exception is NotImplementedException)); Console.WriteLine("Exception is a NotSupportedException one ? {0}", (exception is NotSupportedException)); } Console.ReadLine(); Environment.Exit(0); } private static void testExceptionType() { throw new NotImplementedException(); } }
"Exception is a NotImplementedException one ? true"
"Exception is a NotSupportedException one ? false"
;)
Sûr ?
Sûr sûr ?
http://msdn.microsoft.com/fr-fr/libr...t.gettype.aspx
GetType() renvoie le vrai type de l'objet, pas celui de la référence.
Normalement le GetType() devrait marcher, il me semble.
Utiliser déjà Name au lieu de ToString().
Le fonctionnement de GetType donne le type effectif de l'instance contenu dans la variable; il n'y a aucune raison pour que cela ne fonctionne pas avec les classes dérivées de Exception.
Ceci dit, il peut être intéressant d'examiner le InnerException le cas échéant; par exemple
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 catch(Exception exception) { Type exceptionType; exceptionType = exception.GetType().; if(exceptionType == typeof(Exception) { Exception innerException = exception.InnerException; if(innerException != null) { exceptionType = innerException.GetType(); } } string exceptionTypeName = exceptionType.Name; }