Question liée à la gestion trasactions avec EF de base:Est-ce qu'une transaction Rollback() a une chance de déclencher une exception?
Est-ce un IDbContextTransaction.Rollback()
ont une chance de retourner une exception, afin qu'il puisse jamais judicieux de le placer dans un bloc d'essai?
à savoir
try
{
//...
if(condition)
transaction.Commit();
else
throw methodReturn.Exception;
}
catch (Exception e)
{
try // Does this try make any sense?
{
transaction.Rollback();
}
catch
{
// Log
}
throw e;
}
PD: Dans cette situation particulière, il est impossible d'intégrer la transaction dans une déclaration using
, donc un manuel .Rollback()
appel est requis dans le code réel.
Bien sûr Rollback peut échouer. Par exemple, si la SqlConnection casse lors de l'annulation de la transaction, une exception est levée. Plus d'informations: https://msdn.microsoft.com/en-us/library/zayx5s0h(v=vs.110).aspx –
Puisque vous parlez d'une interface, la réponse est: Cela dépend de l'implémentation réelle. Mais en général: Oui, il pourrait lancer une exception, par exemple le 'SqlTransaction.Rollback()' lancera une exception 'InvalidOperationException' lorsque la transaction a déjà été validée ou a déjà été annulée (voir le lien suivant sur MSDN: https: // msdn .microsoft.com/fr-fr/library/zayx5s0h (v = vs.110) .aspx) – bassfader