Použití RAISERROR s HODIT Hodit Systému SQL Server Chyba

posted in: Articles | 0

HODIT nahrazuje RAISERROR v SQL Server a je to preferovaný způsob budoucna zvýšit chybové zprávy, a tlačit je do volající kód. Házení je ve skutečnosti mnohem intuitivnější než RAISERROR, pokud jde o to, jak na něj váš kód reaguje.

THROW byl vytvořen jako prostředek, který lépe odpovídá kódu pro zpracování chyb v současných programovacích jazycích. RAISERROR byl asi od roku 1998, poprvé propuštěn v SQL Server 7.0., THROW byl poprvé zařazen do SQL Serveru 2012.

RAISERROR je stále zahrnut v aktuálních verzích SQL Serveru, ale existují značné rozdíly mezi tím, jak SQL proudí, když se RAISERROR nazývá vs. když je vyvolán hod. Konkrétně RAISERROR nezastaví provádění aktuálního postupu, zatímco THROW vždy zastaví aktuální postup a předá chybu až do postupu volání.

hodit jako RAISERROR umožňuje „zvýšit“ vlastní chyby, ale okamžitě zastaví aktuální proces a vrátí chybu do postupu volání.,

THROW vám umožní dělat skoro všechno, co RAISERROR povoleno, s jednou významnou výjimkou: THROW neumožňuje zvýšit systémové chyby SQL Server. Pokud však potřebujete hodit systémovou chybu, můžete to udělat nejprve pomocí RAISERROR v bloku TRY a pomocí hodu do odpovídajícího bloku úlovku hodit systémovou chybu.

PŘÍKLAD:

–následující příkaz způsobí chybu, protože HODIT nemůžu hodit systém výjimek:
HODIT 40655, Databáze mistra, nemůže být obnovena.,‘, 1;

VÝSLEDKY:

Msg 35100, Úroveň 16, Stát 10, Řádek 2
číslo Chyby 40655 v HODU prohlášení je mimo platný rozsah. Zadejte číslo chyby v platném rozsahu 50000 až 2147483647.

Ale můžete obejít toto omezení HODIT, že není schopen hodit systém výjimek při použití ve spojení s RAISERROR uvnitř bloku TRY/CATCH:

–Hodit systém výjimkou pomocí RAISERROR první v bloku TRY/CATCH.,
BEGIN ZKUSIT
PRINT ‚Begin Try‘;
RAISERROR (40655, 16, 1);
PRINT ‚End Try‘;
VYZKOUŠET

BEGIN CHYTIT
PRINT ‚Begin Catch /, Než Házet Error‘;
HODIT;
PRINT ‚Konec Chytit / Po Házení Chyba‘;
END CHYTIT;

PRINT ‚Po Try/Catch‘;

VÝSLEDKY:

Begin Zkusit
Begin Catch /, Než Házet Chyby
Msg 40655, Úroveň 16, Stav 1, Řádek 3
Databáze „hlavní“ nemůže být obnovena.,

Jak můžete vidět ve výsledcích, RAISERROR nezastaví proces flow, ale to vám umožní zvýšit systémové chyby a HODIT se zastavit proces toku a umožňuje házet chyby systému můžete zvýšit pomocí RAISERROR, aby volající proces. Pomocí dvou prohlášení spolu vám umožní mít plnou kontrolu chybových zpráv, a když se vrátí k volání procedury.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *