Esta é uma série de 3 posts (talvez, surja mais uma) onde eu quero tratar sobre tratamento de exceções dentro do SQL Server.
Recomendo que sejam lidas as partes 1 e 2 da série, caso ainda não tenha feito, pois elas darão um bom embasamento sobre alguns pontos do que será dito neste terceiro post.
Existem algumas forma de implementar o retorno do erro ao usuário: PRINT, SELECT, RAISERROR e THROW. Tudo vai depender de como a rotina está sendo implementada e de como a mensagem deve ser exibida para o usuário.
O RAISERROR acompanha o SQL Server desde a versão 7.0 (me corrijam se eu estiver enganado), enquanto o THROW surgiu como um substituo ao primeiro na versão 2012.