Il y a déjà des publications qui demandent quelle est la différence entre les deux.
(pourquoi dois-je même mentionner ça...)
Mais ma question est différente dans le sens où j'appelle "throw ex" dans une autre méthode de gestion d'erreur digne d'un dieu.
public class Program {
public static void Main(string[] args) {
try {
// quelque chose
} catch (Exception ex) {
HandleException(ex);
}
}
private static void HandleException(Exception ex) {
if (ex is ThreadAbortException) {
// ignorer alors,
return;
}
if (ex is ArgumentOutOfRangeException) {
// Enregistrer alors,
throw ex;
}
if (ex is InvalidOperationException) {
// Afficher un message alors,
throw ex;
}
// et ainsi de suite.
}
}
Si try & catch
étaient utilisés dans le Main
, alors j'utiliserais throw;
pour relancer l'erreur. Mais dans le code simplifié ci-dessus, toutes les exceptions passent par HandleException
Est-ce que throw ex;
a le même effet que d'appeler throw
lorsqu'il est appelé à l'intérieur de HandleException
?
5 votes
Il y a une différence, elle concerne la manière dont la trace de la pile apparaît dans l'exception, mais je ne me souviens pas laquelle est laquelle pour l'instant, donc je ne vais pas la lister comme réponse.
0 votes
@Joel: Merci. Je suppose que l'utilisation de l'exception HandleError est une mauvaise idée. Je voulais juste refactoriser du code de gestion des erreurs.
1 votes
La troisième façon est d'emballer dans une nouvelle exception et de la relancer timwise.blogspot.co.uk/2014/05/…
0 votes
Possible duplicate de différence entre throw et throw new Exception()