خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


مدیریت خطاها در SQL Server- استفاده از ساختار TRY – CATCH

مدیریت خطاها در SQL Server- استفاده از ساختار TRY – CATCH
در زمان اجرای کوئری ها و اسکریپت ها و همچنین stored procedure ها در SQL سرور ممکن است با خطاهای مختلفی مواجه شوید و مدیریت این خطاها امری مهم برای برنامه نویسان SQL Server می باشد. درست مانند سایر زبان های برنامه نویسی ، SQL Server نیز TRY - CATCH را برای مدیریت خطا و بازگشت پیام خطا دارد. در ادامه کار نمونه ای از استفاده TRY - CATCH برای گرفتن استثناء در SP را مشاهده خواهید کرد.

نرم افزار سامانه مودیان راهکار



Syntax کلی استفاده از TRY - CATCH به صورت زیر می باشد:

/** Create Stored Procedure **/

DECLARE @Error nvarchar(MAX);

/** More Variable Declarations & Code **/

BEGIN TRY

/** Code which needs to handled for exception. **/

END TRY
BEGIN CATCH
SET @Error = 'Error Number: ' + CAST(ERROR_NUMBER() AS VARCHAR(10)) + '; ' +
'Error Severity: ' + CAST(ERROR_SEVERITY() AS VARCHAR(10)) + '; ' +
'Error State: ' + CAST(ERROR_STATE() AS VARCHAR(10)) + '; ' +
'Error Line: ' + CAST(ERROR_LINE() AS VARCHAR(10)) + '; ' +
'Error Message: ' + ERROR_MESSAGE()

BREAK
END CATCH

/** Any other code **/

در این مثال یک stored procedure ایجا دشده که در آن از بلوک TRY - CATCH استفاده شده است. در واقع در این SP، خطا وجود دارد که قرار است با استفاده از بلوک Try-Catch این خطا را بگیریم. CATCH، شماره خطای استثنا و شدت ، وضعیت ، خطی که خطا در آن رخ داده و پیغام خطا را در یک متغیر ذخیره می کند.

/** Create Stored procedure **/
CREATE PROCEDURE mtb_SampleExceptionHndling
@Error NVARCHAR(MAX) OUTPUT
AS
BEGIN
BEGIN TRY
SELECT 5/0;
END TRY
BEGIN CATCH
SET @Error = 'Error Number: ' + CAST(ERROR_NUMBER() AS VARCHAR(10)) + '; ' + Char(10) +
'Error Severity: ' + CAST(ERROR_SEVERITY() AS VARCHAR(10)) + '; ' + Char(10) +
'Error State: ' + CAST(ERROR_STATE() AS VARCHAR(10)) + '; ' + Char(10) +
'Error Line: ' + CAST(ERROR_LINE() AS VARCHAR(10)) + '; ' + Char(10) +
'Error Message: ' + ERROR_MESSAGE()
END CATCH
END
GO

/** Execute Stored Procedure **/
DECLARE @ErrorMsg NVARCHAR(MAX)
EXEC mtb_SampleExceptionHndling @Error = @ErrorMsg output
Select @ErrorMsg
GO



خروجی کوئری را در ذیل مشاهده می کنیم.

/** Result **/
-----------

(0 rows affected)

-----------

Error Number: 8134;
Error Severity: 16;
Error State: 1;
Error Line: 7;
Error Message: Divide by zero error encountered.

(1 row affected)

مدیریت خطاها در SQL Server- استفاده از ساختار TRY - CATCH . آموزشگاه رایگان خوش آموز


توجه:
TRY - CATCH هیچ استثنا یا هشداری که با شدت خطای کمتر از 10 باشد را لحاظ نمی کند.



نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز