ストアド プロシージャ キャッチ ブロック コード。
alter PROCEDURE [dbo].[TESTError]
(
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
SELECT 5/0
END TRY
BEGIN CATCH
DECLARE @ErrorNumber INT
SELECT @ErrorNumber = ERROR_NUMBER()
RAISERROR
(N'The error code is: %d',
16, -- Severity.
1, -- State.
@ErrorNumber,
'');
END CATCH
END
上記のストアド プロシージャは、SSMS を使用して実行すると、エラーをスローして表示します。
.Net クライアント コードのみの例外部分。
catch (SqlException ex)
{
string msg = string.Format("Error number: {0} / Message: {1}", ex.Number, ex.Message);
}
アプリケーションがストアド プロシージャを呼び出すと、例外ブロックでキャッチされません。
どんな種類のヒントやアイデアも私を助けてくれます。