Raising an Alert with THROW
No, THROW is missing some RAISERROR functionality, including WITH LOG. I blogged about this back when SQL Server 2012 was still in beta, and no changes have been made since:


SQL Server v.Next (Denali) : Exploring THROW


However, you don't need to use sp_addmessage to send RAISERROR messages to the log, unless you need a custom message number outside of 50000:

DECLARE @s VARCHAR(32) = 'friend';
RAISERROR(N'What happened %s?', 19, 1, @s) WITH LOG;


Results:


  


Reading the guts of the question again, you probably do want to use sp_addmessage to achieve your ultimate goal. I shouldn't have tried to separate the logging on its own from that (50000 doesn't help much if you have other errors getting logged and want different alerts).

Example of putting the error number into the text for the message raised by RAISERROR:

BEGIN TRY
  SELECT 1/0;
END TRY
BEGIN CATCH
  DECLARE @err INT = ERROR_NUMBER();
  RAISERROR(N'What happened %d?', 19, 1, @err) WITH LOG;
END CATCH