Nothing to do with the transaction. You can't use GO within the TRY.
GO is not a T-SQL command. It's a batch terminator. It marks where to break the code sent to SQL. With a GO there, you're telling SSMS to send the following as a batch to SQL
BEGIN TRY
BEGIN TRAN T1
Use AdventureWorks
I'm pretty sure you can agree that the block of code above is not valid.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability