Nowości w SQL Server 2012 – obsługa błędów i polecenie THROW

2012-05-14 

Jedną z nowości w SQL Server 2012 jest polecenie THROW służące do wywoływania wyjątków. Działa ono podobnie do znanej wcześniej funkcji RAISERROR. Zgodnie z MSDN w najnowszej wersji języka T-SQL zalecane jest stosowanie THROW zamiast RAISERROR. Omawiane polecenie ma dwa zastosowania. Pierwsze z nich polega na wywołaniu THROW z określonymi parametrami w celu wygenerowania własnego wyjątku. Drugim zastosowaniem jest wywołanie THROW bez argumentów w sekcji CATCH (tylko w tym miejscu jest to dozwolone) co pozwala na ponowne zgłoszenie przechwyconego wyjątku (propagowanie wyjątku).

THROW error_number, error_message, error_state

error_number – numer błędu (wartość INT nie mniejsza od 50000), w odróżnieniu od RAISERROR nie musi znajdować się w sys.messages
error_message – komunikat błędu
error_state – stan, wartość z przedziału 0 – 255

W przypadku polecenia THROW nie mamy wpływu na parametr severity (Level), zawsze jest on ustawiony na 16.

Przykład użycia:

THROW 50001, 'Własny komunikat błędu', 3;

Dotychczas propagowanie wyjątku z użyciem polecenia RAISERROR realizowane było w następujący sposób:

begin try
    select 1 / 0
end try
begin catch
    --Obsługa błędów

    --Propagowanie wyjątku
    declare
        @ErrorMessage nvarchar(4000) = ERROR_MESSAGE(),
        @ErrorSeverity int = ERROR_SEVERITY(),
        @ErrorState int = ERROR_STATE()

    RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState)
end catch

Dzięki poleceniu THROW operacja ta staje się znacznie prostsza:

begin try
    select 1 / 0
end try
begin catch
    --Obsługa błędów

    --Propagowanie wyjątku
    THROW
end catch

Więcej informacji o nowościach w SQL Server 2012: MSDN 

Reklamy

Posted on 2012-05-14, in SQL Server and tagged , . Bookmark the permalink. Dodaj komentarz.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d blogerów lubi to: