SQL Server 2012 a introduit l’instruction THROW, qui offre aux développeurs un moyen amélioré de gérer les erreurs dans leur code. Dans cet article, nous explorerons comment l’instruction THROW peut être utilisée efficacement dans la gestion des erreurs.
Avant l’introduction de l’instruction THROW, les développeurs devaient se fier à la fonction système @@ERROR ou à l’instruction RAISERROR pour gérer les erreurs dans leur code T-SQL. Cependant, ces méthodes avaient des limitations et n’étaient pas aussi flexibles que la nouvelle instruction THROW.
La construction TRY…CATCH, introduite dans SQL Server 2005, permettait aux développeurs de gérer les erreurs dans un bloc de code spécifique. Cependant, elle nécessitait toujours l’utilisation de l’instruction RAISERROR pour afficher les messages d’erreur, ce qui à son tour nécessitait l’ajout d’un message défini par l’utilisateur dans la table sys.messages.
Avec l’instruction THROW, les développeurs peuvent maintenant générer et gérer des exceptions sans avoir besoin d’un message défini par l’utilisateur dans la table sys.messages. Le numéro d’erreur utilisé avec l’instruction THROW doit être supérieur à 50000, et toutes les exceptions générées à l’aide de THROW ont un niveau de gravité de 16.
Jetons un coup d’œil à un exemple simple pour illustrer l’utilisation de l’instruction THROW :
USE TempDB;
GO
CREATE TABLE ErrorHistory
(
ErrorTime DATETIME,
ErrorSeverityLevel NVARCHAR(100),
ErrorMessage NVARCHAR(1000)
);
GO
BEGIN TRY
DECLARE @TryDivision INT = 10 / 0;
END TRY
BEGIN CATCH
/* Insérer les informations sur l'erreur et ensuite renvoyer le message d'erreur reçu */
INSERT INTO ErrorHistory VALUES(GETDATE(), ERROR_SEVERITY(), ERROR_MESSAGE());
THROW;
END CATCH
GO
SELECT * FROM ErrorHistory;
GO
Dans l’exemple ci-dessus, nous créons une table appelée ErrorHistory pour stocker les informations sur les erreurs. Dans le bloc TRY, nous divisons intentionnellement un nombre par zéro pour générer une erreur. Dans le bloc CATCH, nous insérons les informations sur l’erreur dans la table ErrorHistory, puis renvoyons le message d’erreur à l’application cliente.
En utilisant l’instruction THROW, nous pouvons facilement capturer et enregistrer les informations sur les erreurs, ce qui facilite le dépannage et le débogage de notre code. De plus, l’instruction THROW offre une manière plus rationalisée et efficace de gérer les erreurs par rapport aux méthodes précédentes.
En conclusion, l’instruction THROW introduite dans SQL Server 2012 offre aux développeurs un outil puissant pour la gestion des erreurs. Elle élimine le besoin de messages définis par l’utilisateur dans la table sys.messages et offre une manière plus flexible et efficace de gérer les exceptions. En incorporant l’instruction THROW dans votre code, vous pouvez améliorer les capacités de gestion des erreurs de vos applications SQL Server.