Olá Pessoal, neste artigo vamos falar sobre tratamentos de exceções no SQL Server, utilizando a condição Try…Catch.
Se você já criou algum tratamento de exceção por exemplo no C# não terá dificuldade. Mas para deixar bem claro caso esteja começando, a estrutura é divida no bloco TRY(onde estará o código principal a ser processado) e CATCH(código que será executado caso algo de errado no processo dentro do bloco TRY).
Segue abaixo alguns exemplos:
Para exemplificar vou simular um erro de um insert em uma tabela.
Execute o código abaixo para criar a tabela, ou se preferir utilize alguma que já esteja criada em seu banco de dados.
create table TesteTryCatch(id int, Texto varchar(5))
Eai, vamos fazer o teste? Perceba que coloquei o campo varchar com limite de 5 caracteres e iremos executar um insert com mais de 5 caracteres para que possa ocorrer a exceção.
BEGIN TRY
INSERT INTO TesteTryCatch(id, Texto)values(1, 'Testes')
PRINT 'SUCESSO'
END TRY
BEGIN CATCH
PRINT 'ERRO'
END CATCH
Neste exemplo ele apresenta “SUCESSO” caso de tudo certo e caso ocorra alguma exceção, é apresentado a mensagem “ERRO”.
Mas podemos também obter informações mais relevantes do que apenas uma mensagem “ERRO”. Você pode utilizar no bloco CATCH algumas funções para retornar dados sobre o erro que ocorreu, podendo ser apresentado uma informação mais concisa do que ocasionou o erro.
Segue a lista de algumas destas funções.

Segue abaixo o mesmo exemplo que utilizamos acima, só que agora implementado com estas funções.
BEGIN TRY
INSERT INTO TesteTryCatch(id, Texto)values(1, 'Testes')
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() AS ErrorLine
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_NUMBER() AS ErrorNumber
,ERROR_STATE() AS ErrorState
,ERROR_MESSAGE() AS ErrorMessage
END CATCH
Vejam abaixo exemplo em execução.

Vale lembrar que estas funções que retornam detalhes dos erros devem ser implementadas dentro do bloco CATCH, caso contrário os campos retornarão todos como NULL.
É isso ai! Bons Estudos!