If you are to do it that way, you need to check the error number, so that you know that the error is a key violation. Now you are assuming that the error is a key violation, but it could be something else.
However, I would write it so that I check in advance if the address already exists:
IF NOT EXISTS (SELECT * FROM Users WHERE EmailAddress = @emailAddress)
BEGIN
INSERT...
END
ELSE
BEGIN
RAISERROR('Email address "%s" is already in use.', 16, 1, @emailAddress)
END
This raises an exception in the client which is probably desirable.