2016-09-07 7 views
0

Je reçois actuellement une exception levée et le message qu'elle indique est que la valeur ne correspond pas à la plage attendue. J'essaie de redresser un morceau de code pour saisir cette exception et la supprimer - je sais quel est le problème - essentiellement quelqu'un essaie de tirer un enregistrement d'une liste en utilisant un identifiant qui n'existe pas.Attraper une exception

Des idées comment je vais attraper ça?

+0

https://msdn.microsoft.com/en-us/library/0yd65esw.aspx –

+0

Vous devriez utiliser 'try-catch', mais vous devez également gérer l'erreur avec le code. Par exemple, si vous lisez un tableau, et que vous allez trop loin, à travers votre code, vous ne devriez pas le laisser faire, et vous devriez arrêter quand le tableau n'a plus d'éléments. Le 'try-catch' devrait être utilisé pour les exceptions générées par l'utilisateur, pas par le code. – Justplayit94

+0

Vous devriez au moins enregistrer l'exception quelque part. les exceptions ne sont pas jetées pour le plaisir. – Werner

Répondre

2

Pour supprimer une exception que vous devez faire quelque chose comme ça

try 
{ 
    // Code that may throw an exception. 
} 
catch (Exception ex) // Better to use a more specific exception class 
{ 
    // Do nothing - That suppresses the exception. 

    // If you want to do additional checking that may continue the exception 
    // up the stack use "throw" on its own - which compiled to CIL/MSIL's 
    // "rethrow" and doesn't drop much of the information that would 
    // go if you did "throw ex" 
} 

Voilà tout ce qui est de supprimer une exception. Pour la bonne santé de ceux qui doivent maintenir ce code (ou vous-même dans 6 mois lorsque vous avez oublié les raisons pour lesquelles vous avez fait cela), il serait également bon de commenter exactement pourquoi vous supprimez l'exception . Si je vois du code qui supprime une exception, je veux toujours savoir pourquoi.

0

Utilisez un bloc trycatch avec un catch vide? Si vous voulez être vraiment précis, vous pouvez utiliser un filtre d'exception pour attraper seulement ce cas (en C# 6 bien sûr).