La gestion des erreurs en Transact SQL
La gestion des erreurs permet d’anticiper
les problèmes qui peuvent se dérouler au cours
de l’exécution d’un programme.
Le principe est de tester le code dans un
premier bloc avec BEGIN TRY … END TRY puis d’intercepter
l’exception avec BEGIN CATCH … END CATCH.
Syntaxe
BEGIN
... ...
[BEGIN TRY
... ...
END TRY]
[BEGIN CATCH
... ...
END CATCH]
END;
Exemple
DECLARE @i int
BEGIN
BEGIN TRY
SET @i = 2
SET @i = @i / 0
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber
, ERROR_MESSAGE() AS ErrorMessage
, ERROR_LINE() AS ErrorLine;END CATCH
END;
Résultat
Il est aussi possible de traiter l’exception.
DECLARE @i int
BEGIN
BEGIN TRY
SET @i = 2
SET @i = @i / 0
END TRY
BEGIN CATCH
IF @@ERROR = 8134
SET @i = @i / 1
print @i
END CATCH
END;
Résultat
2
Il est possible de lever une erreur grâce à la
fonction RAISERROR(). Cette fonction accepte trois arguments (constante
ou message ou variable, numéro de la gravité d’erreur, état
de l’erreur).
Exemple
DECLARE @i int
DECLARE @f float
BEGIN
IF @i IS NULL OR @i = 0
RAISERROR(’valeur ...