segítségével RAISERROR a dobás, hogy dobja egy SQL Server rendszer hiba

posted in: Articles | 0

dobás helyettesíti RAISERROR SQL Server, és ez az előnyben részesített módszer fog előre emelni hibaüzeneteket, majd nyomja őket, hogy a hívó kódot. A dobás valójában sokkal intuitívabb, mint a RAISERROR, amennyire a kód reagál rá.

dobás jött létre, mint azt, hogy jobban megfeleljenek hibakezelő kódot a jelenlegi programozási nyelvek. A RAISERROR 1998 óta működik, először az SQL Server 7.0-ban jelent meg., Dobás először szerepel SQL Server 2012.

a RAISERROR továbbra is szerepel az SQL Server jelenlegi verzióiban, de jelentős különbségek vannak az SQL áramlásai között, amikor a RAISERROR-t vs.amikor a dobást hívják. Pontosabban, a RAISERROR nem állítja meg a jelenlegi eljárás végrehajtását, míg a THROW mindig leállítja az aktuális eljárást, és a hibát a hívási eljárásig továbbítja.

dobja, mint a RAISERROR lehetővé teszi, hogy” emelje ” az egyéni hibákat, de azonnal leállítja az aktuális folyamatot, majd visszaadja a hibát a hívási eljárás.,

a dobás lehetővé teszi, hogy nagyjából mindent megtegyen, amit a RAISERROR engedélyezett, egy figyelemre méltó kivétellel: a dobás nem teszi lehetővé az SQL Server rendszerhibáinak emelését. De ha el kell dobnia egy rendszerhibát, akkor is megteheti, ha először használja a RAISERROR-t egy PRÓBABLOKKBAN, majd a megfelelő fogási blokk dobásával dobja el a rendszerhibát.

példa:

– a következő utasítás hibát eredményez, mert a dobás nem dobhatja el a rendszer kivételeit:
dobja 40655, ” az adatbázis-mester nem állítható vissza.,”, 1;

eredmények:

Msg 35100, Level 16, State 10, Line 2
Hiba száma 40655 a dobás nyilatkozat kívül esik az érvényes tartományban. Adjon meg egy hibaszámot az 50000-2147483647 érvényes tartományban.

de akkor a munka körül ez a korlátozás a dobás, hogy nem tudja, hogy dobja rendszer kivételek segítségével együtt RAISERROR belül TRY / CATCH blokk:

–dobás rendszer kivétel segítségével RAISERROR először egy TRY / CATCH blokk.,
KEZDŐDIK, PRÓBÁLD
PRINT ‘Kezdődik, Próbáld’;
RAISERROR (40655, 16, 1);
PRINT ‘Végén meg’;
VÉGÉN meg

KEZDŐDIK FOGÁS
PRINT ‘Kezdődik Fogás / Dobás Előtt Hiba’;
DOBJA;
PRINT ‘Vége Fogás / Után Dobott Hiba’;
VÉGE FOGÁS;

NYOMTATÁS Után Try/Catch’;

EREDMÉNYEK:

Kezdődik, Próbáld
Kezdődik Fogás / Dobás Előtt Hiba
Msg 40655, 16-os Szint, az Állami 1, 3-as Vonal
Adatbázis “mester” nem lehet visszaállítani.,

amint az az eredményekben látható, a RAISERROR nem állítja le a folyamat áramlását, de lehetővé teszi a rendszerhibák emelését és a dobást, megállítja a folyamatáramlást, és lehetővé teszi, hogy a RAISERROR segítségével a rendszerhibákat a hívási folyamatba dobja. A két kijelentés együttes használata lehetővé teszi, hogy teljes mértékben ellenőrizhesse a hibaüzeneteket, valamint azt, hogy mikor kerülnek vissza a hívási eljárásba.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük