To jest pytanie, które często mnie pyta. Ponieważ nie mogłem znaleźć żadnego dokładnego duplikatu na stackoverflow, pomyślałem, że zamieściłem to jako odniesienie.Obsługa wyjątków PL/SQL: nic nie rób (zignoruj wyjątek)
Pytanie: W języku PL/SQL, wiem, jak wychwycić wyjątki i wykonać kod, gdy są one przechwytywane, i jak je propagować do bloku wywołującego. Na przykład w poniższej procedurze, wyjątek NO_DATA_FOUND jest obsługiwany bezpośrednio, podczas gdy wszystkie inne wyjątki są podniesione do bloku wywołującego:
CREATE OR REPLACE PROCEDURE MY_PROCEDURE()
IS
BEGIN
do_stuff();
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- Do something
handle_exception();
WHEN OTHERS THEN
-- Propagate exception
RAISE;
END;
Ale co polecenia należy użyć do ignorowania jednego lub wszystkich podniesionych wyjątków i powrócić wykonanie kontrolować z powrotem do bloku wywołującego?
Być może warto dodać, że "gdy inne niż zero" jest uważane za kiepską praktykę, z wyjątkiem bardzo specyficznych bloków, w których naprawdę nie obchodzi cię, czy krok działał, czy nie, oraz "kiedy inni następnie podnoszą" po prostu wyrzuca informacje o błędzie . –