As going through the examples keeps your mind active I just came with the idea of an alternative style of error handling.
One that combines the two mentioned in the Article:
It avoids using GO TO and it allows the use of the copy and paste approach:
DECLARE @myErr TABLE(err int)
BEGIN TRAN
INSERT INTO City SELECT 'Anchorage', 'AK'
INSERT INTO @myErr SELECT @@ERROR
INSERT INTO City SELECT 'Los Angles', 'CA'
INSERT INTO @myErr SELECT @@ERROR
INSERT INTO City SELECT 'San Juan', 'PR' --Puerto Rico isn't in our State table
INSERT INTO @myErr SELECT @@ERROR
INSERT INTO City SELECT 'Topeka', 'KS'
INSERT INTO @myErr SELECT @@ERROR
IF (SELECT MAX(err) FROM @myErr) = 0
COMMIT
ELSE
ROLLBACK