No, TRY can only handle certain types of errors in its area. Now you say that you have a stored procedure that looks like this (after it non_existent_columnwas deleted):
CREATE PROCEDURE dbo.blat
AS
BEGIN
BEGIN TRY
SELECT non_existent_column FROM dbo.table_that_exists;
END TRY
BEGIN CATCH
PRINT ERROR_MESSAGE();
END CATCH
END
GO
If you just do it ...
EXEC dbo.blat;
... you will get a clogged compilation error because the statement inside this TRY area cannot parse:
Msg 207, Level 16, State 1, Procedure fooblat, Line 5
Invalid column name 'non_existent_column'.
However, you can catch this error in the external area (whether the procedure has it TRY/CATCHor not):
BEGIN TRY
EXEC dbo.fooblat;
END TRY
BEGIN CATCH
PRINT 'There was an error:';
PRINT ERROR_MESSAGE();
END CATCH
( , , ):
There was an error:
Invalid column name 'non_existent_column'.
SQL, , , , , - .