我需要在SQL中抛出/引发异常以捕获C#应用程序。但是,每当我在CATCH块中抛出错误时,实际上都不会抛出错误。 这是我正在使用的SQL代码:
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO Transactions (Id, Amount)
VALUES (NEWID(), 43346);
INSERT INTO Transactions (Id, Amount)
VALUES (NEWID(), 'fas');
COMMIT TRANSACTION
END TRY
BEGIN CATCH
DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();
DECLARE @ErrorSeverity INT = ERROR_SEVERITY();
DECLARE @ErrorState INT = ERROR_STATE();
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
-- RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);
THROW 50001, @ErrorMessage, @ErrorSeverity;
END CATCH;
我尝试了THROW
和RAISERROR
两种方法。但是,它们都不起作用。我在我的应用程序和DBeaver中测试了它,但我仍然无法引发异常。此外,当我在CATCH
块之外引发异常时,会使用THROW
和RAISERROR
方法引发异常。不确定我做错了什么。