Metody realizacji języków programowania/MRJP Wykład 10

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Wyjątki

  • Pojęcie wyjątek oznacza błąd (nietypową, niepożądaną

sytuację).

  • Obsługa wyjątków oznacza reakcję programu na wykryte błędy.
  • Funkcja, która napotkała problem zgłasza (``rzuca)

wyjątek.

  • Wyjątek jest przekazywany do miejsca wywołania funkcji, gdzie

może być ``wyłapany i obsłużony albo przekazany wyżej. Innymi słowy poszukiwania bloku obsługi wyjątku dokonywane są połańcuchu DL.

  • Przy wychodzeniu z funkcji i bloków usuwane są obiekty automatyczne.


Składnia

Dla ustalenia uwagi przyjmiemy składnię C++ (składnia Jav y jest w tej kwestii bardzo podobna) Zgłoszenie wyjątku:

 throw <wyrażenie>

Obsługa wyjątków:

 try {
   <instrukcje>
 } catch(<parametr 1>) {
   <obsługa wyjątku 1>
 //...
 } catch(<parametr n>) {
   <obsługa wyjątku n>
 }


Semantyka

  • Gdy któraś z instrukcji w części try przekazała
 wyjątek, przerywamy wykonanie tego ciągu i szukamy catch z
 odpowiednim parametrem.
  • Jeśli znajdziemy, to wykonujemy obs âug ¹ tego wyj ¥tku, a po jej
 zako�$-1 äczeniu instrukcje po wszystkich \texttt{catch}.
  • Je�$-1 ûli nie znajdziemy, przechodzimy do miejsca wywo âania
 (usuwaj�$-1 ¥c obiekty automatyczne bie¡¼ ¥cej funkcji) i
 kontynuujemy poszukiwanie.
  • Je�$-1 ûli nie znajdziemy w ¡¼adnej z aktywnych funkcji, wykonanie
 programu zostanie przerwane.