Lancer une exception dans le bloc try
try {
if (isFileDownloaded)
//do stuff
else
throw new CustomException()
}
catch (Exception e)
{
//something went wrong save error to log
}
finally
{
//release resources
}
Ma question est la catch
attrape le ApplicationException
levée dans le bloc try? est-il dans un mauvais codage de style? Doit-il être écrit d'une autre manière?
source d'informationauteur Quincy
Vous devez vous connecter pour publier un commentaire.
La
catch
va attraper vos exception (et tous les autres qui se produit). Cela étant dit, j'essaie d'éviter d'écrire du code comme celui-ci lorsque cela est possible.Personnellement, je ne vois guère de raison d'avoir jamais la gestion des exceptions (catch) pour une exception levée dans le même champ d'application. Si vous pouvez gérer votre erreur dans votre méthode, - mettre en place le traitement des exceptions (c'est à dire: l'ouverture de session) directement dans le bloc try.
À l'aide d'un
catch
est plus utile, de l'OMI, pour attraper les exceptions levées par les méthodes au sein de votretry
bloc. Ce serait plus utile, par exemple, si votre//do stuff
section est arrivé d'appeler une méthode qui a soulevé une exception.Aussi, je recommande de ne pas attraper chaque exception (
Exception e
), mais plutôt les types d'exceptions que vous pouvez gérer correctement les. La seule exception serait si vous avez renvoi de l'exception au sein de votre fourre - ie: de l'utiliser à des fins de journalisation, mais encore le laisser remonter la pile d'appel.Oui, il va attraper
ApplicationException
car elle naît deException
.De la manipulation de la base de l'exception doit être fine dans la plupart des cas sauf si vous devez vous connecter ou de faire quelque chose avec un autre type d'exception...
Oui les prises de catch votre ApplicationException et oui est est mauvais style de codage. Une bonne règle générale, seul hic, exception spécifique et ceux que vous allez faire quelque chose avec, comme la fixation de l'état de l'application.
Aussi, pour info,
ApplicationException
a été abandonné depuis .NET 2.0 comme une exception à dériver. Il n'a jamais été conçu comme une exception à jeter sur son propre, de sorte que vous ne devriez probablement pas l'utiliser du tout.