Es una mejor práctica llamar explícitamente la reversión de transacciones o dejar que una excepción active una reversión implícita?

En el siguiente código, si se produce alguna excepción al ejecutar las instrucciones SQL, deberíamos esperar un retroceso implícito en la transacción, ya que la transacción no se confirmó, se sale del alcance y se elimina:

using (DbTransaction tran = conn.BeginTransaction())
{
    //
    // Execute SQL statements here...
    //
    tran.Commit();
}

Es lo anterior una práctica aceptable, o debería uno detectar la excepción y hacer una llamada explícita a tran.Rollback () como se muestra a continuación:

using (DbTransaction tran = conn.BeginTransaction())
{
    try
    {
        //
        // Execute SQL statements here...
        //
        tran.Commit();
    }
    catch
    {
        tran.Rollback();
        throw;
    }
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta