How do I create a SQL Agent Alert on a custom error message in SQL Server 2012?
Please refer to Create a User-Defined Event


  By default, user-defined messages of severity lower than 19 are not sent to the Microsoft Windows application log when they occur. User-defined messages of severity lower than 19 therefore do not trigger SQL Server Agent alerts.


So your message should be 

EXEC sp_addmessage @msgnum = 50005,
      @severity = 1,  -- Informational messages that return status information or report errors that are not severe. The Database Engine does not raise system errors with severities of 0 through 9.
      @msgtext = N'%s';
GO


When you use THROW, it defaults to severity 16 which does not fire the alert.

RAISERROR (50005, -- Message id.
       1, -- Severity,
       1, -- State,
       N'My custom message') with log;




USE [msdb]
GO

/****** Object:  Alert [Alert DBA on custom errors]    Script Date: 1/22/2016 3:17:22 PM ******/
EXEC msdb.dbo.sp_add_alert @name=N'Alert DBA on custom errors', 
        @message_id=50005, 
        @severity=0, 
        @enabled=1, 
        @delay_between_responses=0, 
        @include_event_description_in=0, 
        @database_name=N'AdventureWorks2012_test', 
        @category_name=N'[Uncategorized]', 
        @job_id=N'00000000-0000-0000-0000-000000000000'
GO




Also, make sure you use @delay_between_responses to a sensible value so that your inbox is not flooded with emails.

Also, refer to my answer for Monitoring free space in SQL Server data files using user defined message and alerts.