Metody realizacji języków programowania/MRJP Wykład 10: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== 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. |
Wersja z 09:38, 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�$-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.