Valor de @@error en sql

Es mi primer mensaje aquí, espero no cagarla…

Soy estudiante de ASIR y tengo el modulo de gestión de BBDD y tengo una duda:

Si yo tengo este código para la creación de 3 tablas, y ha de hacerse de forma que o se hagan todas o ninguna :

DECLARE @ERROR INT

BEGIN TRANSACTION

CREATE TABLE PUBLICO (
NUMPERSONA INT NOT NULL,

)

CREATE TABLE ASISTIR (
IDRUTA INT NOT NULL,

)

CREATE TABLE RUTAS (
IDRUTA INT PRIMARY KEY,
….
)

SET @ERROR=@@ERROR

IF @ERROR=0
COMMIT TRANSACTION

IF @ERROR!=0
ROLLBACK TRANSACTION

Mi pregunta es: la variable @@error, recoge los errores del bloque de los 3 CREATE TABLE o solo recoge los del ultimo bloque? Y seria mejor hacerlo así, o con un TRY-CATCH?

Gracias