¿Necesito usar un bloque try..catch y un rollback explícito en un procedimiento de SQL Server?

Si estoy codificando un procedimiento de SQL Server (2008r2), y lo envuelvo en una transacción, ¿tengo que encerrarlo explícitamente en un bloque try..catch, y luego llamar explícitamente rollback en el bloque catch, o saldrá y deshacer el mismo por su cuenta?

es decir.:

¿Cómo hace esto:

    begin transaction

    begin try
    delete from....

    insert into...
    end try
    begin catch
    rollback transaction
    return
    end catch

    commit transaction

Comparar con:

    begin transaction
    delete from....

    insert into...
    commit transaction

Gracias por cualquier ayuda.

Respuestas a la pregunta(3)

Su respuesta a la pregunta