Metody realizacji języków programowania/MRJP Wykład 10: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Ben (dyskusja | edycje)
Nie podano opisu zmian
Ben (dyskusja | edycje)
Nie podano opisu zmian
Linia 4: Linia 4:
sytuację).
sytuację).
* Obsługa wyjątków oznacza reakcję programu na wykryte błędy.
* Obsługa wyjątków oznacza reakcję programu na wykryte błędy.
* Funkcja, która napotkała problem ''zgłasza (``rzuca'')
* Funkcja, która napotkała problem zgłasza (rzuca)
wyjątek.
wyjątek.
* Wyjątek jest przekazywany do miejsca wywołania funkcji, gdzie
* 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.
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.
* Przy wychodzeniu z funkcji i bloków usuwane są obiekty automatyczne.


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

Wersja z 09:40, 11 wrz 2006

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ńczeniu instrukcje po wszystkich blokach catch.

  • Jeśli nie znajdziemy, przechodzimy do miejsca wywołania

(usuwając obiekty automatyczne bieżącej funkcji) i kontynuujemy poszukiwanie.

  • Jeśli nie znajdziemy w żadnej z aktywnych funkcji, wykonanie

programu zostanie przerwane.