Create stored procedure inside try-catch block
From the CREATE PROCEDURE documentation:


  The CREATE PROCEDURE statement cannot be combined with other
  Transact-SQL statements in a single batch.


If you need a try/catch, you'll need to execute the DDL using dynamic SQL so that it is in a separate batch:

BEGIN TRY   
    DECLARE @CreateProcedureStatement nvarchar(MAX) =
N'CREATE PROCEDURE [ammeghezi1] (@w INT) AS SELECT ''''';
    EXEC sp_executesql  @CreateProcedureStatement;
END TRY
BEGIN CATCH
    THROW;
END CATCH
GO