• Nie Znaleziono Wyników

Obsługa wyjątków

N/A
N/A
Protected

Academic year: 2021

Share "Obsługa wyjątków"

Copied!
2
0
0

Pełen tekst

(1)

Uniwersytet Zielonogórski

Wydział Informatyki, Elektrotechniki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Informatyka stacjonarne-dzienne pierwszego stopnia z tyt. inżyniera

Laboratorium Programowania Obiektowego

Obsługa wyjątków

1. Stworzyć klasę z odpowiednią funkcją składową, rzucającą wyjątkiem. Wewnątrz tej klasy, umie- ścić klasę zagnieżdzoną celem wykorzystania jej jako obiektu wyjątku. Ma ona zawierać pojedynczy wskaźnik char* reprezentujący komunikat opisujący wyjątek. Wyposażyć ją w inicjalizujący kon- struktor domniemany, uzupełniający treść komunikatu. Napisać blok obsługujący wyjątek poprzez wyprowadzenie na ekran treści komunikatu.

2. Przeanalizować poniższy fragment programu i wyjaśnić jaka będzie wartość zmiennej i w przypadku, gdy obiekt E, jest typu:

a)const int E, b)int *E, c)int &E, d)float E, e)int *&E, f)const float & const E //...

int i=1;

try{

try{

throw E;}

catch(int &){i++;throw;}

catch(const int){i+=2;}

catch(float *){i-=2;}

catch(int *){i--;throw;}}

catch(int *){i*=2;}

catch(int){i--;}

catch(...){i--;}

//...

3. Dany jest następujący schemat dziedziczenia klas: A−→B−→C. W każdej z nich znajdują się wir- tualne metody nazwa wyświetlające nazwę typu obiektu na rzecz którego są wywoływane. Opisać efekt działania następujących operacji:

a) b) c)

try try try

{C ob1;throw ob1;} {C ob2;throw ob2;} {static C ob3;throw &ob3;}

catch(B ex1) catch(B &ex2) catch(A *ex3)

{ex1.nazwa();} {ex2.nazwa();} {ex3->nazwa();}

4. Utworzyć klasę z własnym operatorem new. Operator ten ma przydzielić pamięć dla wybranej losowo liczby obiektów (z przedziału od 5 do 50), a następnie zasymulować ”błąd wyczerpania pamięci” i zasygnalizować sytuację wyjątkową. Dodać statyczną metodę, która odzyska przydzieloną pamięć. Następnie utworzyć blok instrukcji programu odporny na wystąpienie tego typu wyjątku.

5. (Trywialne ale obowiązkowe!) Napisać funkcję main(), która przechwytuje wszystkie możliwe wyjątki i sygnalizuje je jako odpowiednie błędy.

6. (Obowiązkowe!) Utworzyć destruktor rzucający wyjątkiem i napisać program udowadniający, że takie rozwiązanie może prowadzić do niekontrolowanego zakończenia programu przez funkcję terminate(). Wykorzystać funkcję set terminate() do prawidłowego zamknięcia programu. Na- stępnie wykazać to samo w przypadku konstruktora kopiującego.

(2)

7. (Również obowiązkowe!) Prześledzić proces rzucania i obsługi wyjątku przy użyciu własnej klasy z konstruktorami inicjującym oraz kopiującym dostarczającymi możliwie wyczerpujących informacji o tym jak obiekt został utworzony. Rzucić wyjątkiem i przeanalizować rezultat. Pokazać, że obiekty rzucane są odpowiednio likwidowane, natomiast gdy rzucany jest wskaźnik do obiektu dynamicz- nego to nie jest zwalniana przypisana mu pamięć. Zaradzić tej sytuacji poprzez technikę ”przejęcia zasobów”.

8. * (Wzajemne wykluczanie!) W oparciu o obsługę wyjątków, zaprogramować symulację (w czasie dyskretnym) współdzielonego dostępu n użytkowników do m serwerów drukowania, przy założeniu że jeden serwer może obsłużyć w danej chwili tylko jednego użytkownika. Uwzględnić możliwości prób jednoczesnego dostępu do serwera, wystąpienia błędów komunikacyjnych oraz związanych z niemożnością wydruku, a także sytuacji awarii serwera.

Litertura

• Grębosz J.,Symfonia C++ standard, Edition 2000, 2008

• Grębosz J., Pasja C++, Edition 2000, 200

• Stroustrup B., Język C++, Wydawnictwa Naukowo-Techniczne 1994, 2000 i 2002

• Eckel B., Thinking in C++. Edycja polska, Helion , 2002

Cytaty

Powiązane dokumenty

Tak więc nawet na poziomie 1, reprezentacja bliska oryginałowi okazuje się z samej swej natury niewystarczająca. Jest to rodzaj metafory, i interpretacja konieczna

System Femap ™ firmy Siemens PLM Software jest częścią portfolio produktów symulacyjnych Simcenter i ułatwia wykonywanie zaawansowanych analiz inżynierskich.. Femap jest

Żeby ustawić początek układu – na przykładzie będzie to miejsce w którym znajduje się kulka – klikamy na punkt przecięcia i przeciągamy tam gdzie chcemy:.. „Łapiąc”

Tuż przed wyjściem program zapisuje „Dane” na dysk, do pliku w tym samym katalogu, z którego został uruchomiony. Po starcie program odczytuje „Dane”

• Klasy dziedziczące po klasie Exception są typami wyjątków, które automatycznie obsługuje Java lub program przy jawnym przechwytywaniu i obsłudze wyjątków w

Pokazać, że przez zmianę nazw zmiennych można założyć, że wszystkie wiersze, poza zerowym, są wektorami leksykograficznie dodatnimi (do wiersza włączamy również element

U_07 Wyszukuje i przetwarza informacje na temat zjawisk i procesów społecznych z różnych źródeł oraz interpretuje je z punktu widzenia problemów edukacyjnych U_08

We współrzędnych sferycznych energia potencjalna staje się po prostu funkcją r, trudniejsza sprawa jest z członem hamiltonianu odpowiadającym energii