BD-1st-2.4-lab12.tresc-1.1-Slajd26
Obsługa wyjątków
Przejdziemy teraz do omawiania zagadnień związanych z obsługą błędów, jakie mogą pojawić się w trakcie działania programu PL/SQL. Źródłem błędów mogą być niepoprawne operacje (np. próba wstawienia do relacji rekordu z wartościami powielającymi istniejące już w kluczu unikalnym wartości, dzielenie przez 0), awarie SZBD lub utrata połączenia z SZBD. SZBD Oracle ma zdefiniowany tzw. katalog błędów, w którym każdy błąd ma przypisany numer i odpowiedni komunikat (np. błąd ORA-00060 z komunikatem „Wykryto zakleszczenie w trakcie oczekiwania na przydzielenie zasobu” czy też ORA-02264 „Nazwa używana przez istniejące ograniczenie”).
Wystąpienie błędu w trakcie działania programu PL/SQL domyślnie powoduje przerwanie programu i wyświetlenie na konsoli komunikatu o wystąpieniu błędu. Programista ma jednak możliwość konstrukcji programu PL/SQL w taki sposób, aby w razie wystąpienia błędu program nie został przerwany, ale wykonał jakąś alternatywną akcję w postaci sekwencji poleceń. Jest to możliwe dzięki istnieniu predefiniowanych wyjątków, będących „nazwami” dla najczęstszych błędów z katalogu błędów SZBD Oracle. W razie wystąpienia w trakcie działania programu błędu, dla którego istnieje predefiniowany wyjątek, odpowiednio skonstruowany program może ów wyjątek „przechwycić”, nie dopuszczając do przerwania programu i wykonując polecenia, umieszczone w sekcji obsługi wyjątków, rozpoczynającej się od słowa kluczowego EXCEPTION. Oprócz wyjątków predefiniowanych programista może użyć swoich własnych wyjątków, jednak sam musi zapewnić ich wywoływanie w programie przez użycie odpowiedniego polecenia.