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 suivante: catch
attrape le ApplicationException
jeté dans le bloc d'essai? Est-ce dans un mauvais style de codage? Devrait-il être écrit d'une autre manière?
Le catch
va attraper votre exception (et tout autre qui se produit). Cela étant dit, j'essaie d'éviter d'écrire du code comme celui-ci lorsque cela est possible.
Personnellement, je vois peu de raisons de manipuler des exceptions (capture) pour une exception projetée dans la même portée. Si vous pouvez gérer votre erreur dans votre méthode - Mettez la manipulation d'exception (c.-à-d. Logging) directement dans le bloc d'essai.
L'utilisation d'un catch
est plus utile, IMO, pour attraper des exceptions projetées par des méthodes dans votre numéro de votre try
bloc. Cela serait plus utile, par exemple, si votre // do stuff
La section a eu lieu à appeler une méthode qui a soulevé une exception.
En outre, je recommande de ne pas attraper toutes les exceptions (Exception e
), mais plutôt les types spécifiques d'exceptions que vous pouvez gérer correctement. La seule exception à ce sujet serait si vous retirez l'exception dans votre capture - c'est-à-dire: l'utiliser à des fins de journalisation mais la laissez-la encore à bouillir la pile d'appel.
Oui, il attrapera ApplicationException
tel qu'il dérive de Exception
.
Manipulation de la base d'exception devrait être bien dans la plupart des cas sauf si vous n'avez besoin de vous connecter ou de faire quelque chose avec un type d'exception différent ...
try{
if (isFileDownloaded)
//do stuff
else
throw new ApplicationException();
}
catch(ApplicationException ae)
{
// log it application exception here...
}
catch(Exception ex)
{
// log all other exceptions here...
}
finally
{
// release resources...
}
En outre, FYI, ApplicationException
a été obsolète depuis .NET 2.0 comme exception à découler de. Il n'a jamais été conçu comme une exception à jeter seul, vous ne devriez probablement pas l'utiliser du tout.
Oui, la prise attraperait votre applicationException et oui est un style de codage médiocre. En tant que bonne règle générale, n'atteignez que des exceptions spécifiques et celles que vous allez faire quelque chose avec, comme la fixation de l'état d'application.