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 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 | * 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ć | 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 | |||
odpowiednim parametrem. | |||
* Jeśli znajdziemy, to wykonujemy | * 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. |
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.