Perché uno di questi è un comando sql transact (il try catch) e l'altro è un'istruzione DDL.
Probabilmente faresti meglio a interrogare per vedere se la colonna esiste prima di eseguire l'istruzione alter.
Per farlo con MSSQL, vedere Come verificare se esiste una colonna in una tabella di SQL Server?
Specificamente per il tuo caso,
IF COL_LENGTH('nyork', 'Qtr') IS NULL
BEGIN
alter table nyork
add [Qtr] varchar(20)
END