J'ai l'instruction try-catch
suivante et je ne souhaite pas lever l'exception si la propriété de message contient "Mon erreur" dans le texte.Suppression par programme des exceptions en C#
Comment puis-je programmer cela? Aussi, cela serait-il considéré comme une odeur de code?
try
{
}
catch(Exception e)
{
if(e.Messages.Contains("My error"))
{
//want to display a friendly message and suppress the exception
}
else
{
throw e;
}
}
Ceci est une mauvaise odeur de code. Si pour une raison ou une autre vous devez vivre avec un framework, cela ne fera que lancer des exceptions du même type que votre code. Mais notez que c'est une différence si vous écrivez «lancer e» ou simplement «jeter» (normalement, vous voulez le dernier). –
Une autre raison pour laquelle cela sent mauvais: cette technique vous empêche de localiser la chaîne d'erreur dans d'autres langues. Ou, si vous recherchez la chaîne d'erreur de quelqu'un d'autre, ils peuvent changer la chaîne dans la prochaine version, ou avoir une chaîne différente s'ils détectent que l'utilisateur est français, et ainsi de suite. –
Oui, cela pourrait être pire que quand un ancien collègue a remplacé tous mes 'catch (Exception e)' par 'catch (Throwable t)' dans une application Java fortement threadée. –