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?