try - catch. La gestion simultanée de plusieurs exceptions de la même façon (ou avec une chute à travers l')
Il y a déjà eu une question posté ici qui est très similaire. Le mien est d'étendre cette question un peu plus. Dites que vous voulez intercepter plusieurs types d'exception, mais souhaitez gérer de la même façon, il est un moyen de faire quelque chose comme commutateur cas ?
switch (case)
{
case 1:
case 2:
DoSomething();
break;
case 3:
DoSomethingElse()
break;
}
Est-il possible de répondre à quelques exceptions près, de la même manière . Quelque chose comme
try
{
}
catch (CustomException ce)
catch (AnotherCustomException ce)
{
//basically do the same thing for these 2 kinds of exception
LogException();
}
catch (SomeOtherException ex)
{
//Do Something else
}
- double possible de Capture de plusieurs Exceptions à la fois?
Vous devez vous connecter pour publier un commentaire.
Actuellement, il n'existe pas de langue de construire à accomplir ce que vous voulez. Sauf l'exception de tous les dériver à partir d'une base d'exception vous devez tenir compte de refactoring la logique commune à une méthode et l'appeler à partir les différents gestionnaires d'exception.
Sinon vous pouvez faire comme expliqué dans cette question:
Attraper plusieurs Exceptions à la fois?
Personnellement, j'ai tendance à préférer la méthode basée sur l'approche.
catch (Exception ex) { if (ex is FormatException || ex is OverflowException) { WebId = Guid.Empty; return; } throw; }
Vous devriez vraiment avoir un BaseCustomException et des captures qu'.
C'est copié à partir d'une autre affectation, mais je suis en tirant le code de ce fil:
Attraper
System.Exception
et de basculer sur les typesJe préfère cela à la répétition d'un appel de méthode dans plusieurs blocs catch.
Dans vb.net on peut utiliser des filtres d'exception-à-dire, par exemple,
Malheureusement, pour des raisons que ce soit, les réalisateurs de C# ont encore refusé de permettre à l'exception de filtrage de code écrit en C#.
Vous ne devriez pas être la capture de cette coutume beaucoup d'exceptions,cependant si vous le souhaitez, vous pouvez créer un
BaseException
et des captures qu'.Je n'ai jamais fait cela ou quelque chose comme ça, et je n'ai pas accès à un compilateur pour des fins de test, mais sûrement quelque chose de ce genre. Pas sûr de la façon de le faire réellement le type de comparaison ou si C# vous permettrait de remplacer le if avec une instruction case.
catch()
blocs est le plus élégant de chemin à faire, car il ne nécessite pas de vérification de type, et une utilisation adéquate de la langue native des constructions pour la gestion des exceptions.