http://pl.wikibooks....bsługa_wyjątków
The try, catch, and throw Statements (C++)
PHP: Exceptions - Manual
Wyjątek – Wikipedia, wolna encyklopedia
Wyjątek (ang. exception) jest mechanizmem przepływu sterowania używanym w mikroprocesorach oraz współczesnych językach programowania do obsługi zdarzeń wyjątkowych, a w szczególności błędów, których wystąpienie zmienia prawidłowy przebieg wykonywania programu. W momencie zajścia niespodziewanego zdarzenia generowany jest wyjątek, który musi zostać obsłużony poprzez zapamiętanie bieżącego stanu programu i przejście do procedury jego obsługi. W niektórych sytuacjach po obsłużeniu wyjątku można powrócić do wykonywania przerwanego kodu, korzystając z zapamiętanych informacji stanu. Przykładowo obsługa błędu braku strony pamięci polega najczęściej na pobraniu brakującej strony z pliku wymiany, co umożliwia kontynuowanie pracy programu, natomiast błąd dzielenia przez zero powoduje, że wykonywanie dalszych obliczeń nie ma sensu i musi zostać przerwane na trwałe.
Implementacja w pawn ma pewne ograniczenia ( stąd pseudo
![;)](https://amxx.pl/public/style_emoticons/default/wink.png)
Nie ma np. wyłapywania nie obsłużonych wyjątków wynika to z tego że implementacja takiego mechanizmu wymagała by użycia np. tasków a takie rozwiązanie było by bardzo podatne na błędy i samo w sobie potrafiło by generować sytuacje wyjątkowe
![;)](https://amxx.pl/public/style_emoticons/default/wink.png)
Radził bym to traktować jaką pewnego rodzaju ciekawostkę ale nic nie stoi na przeszkodzie w używaniu tego w pluginach jednak lepiej przyswoić sobie wiedzę o wyjątkach z źródeł podanych na początku.
http://darkgl.amxx.p...yjatkow-w-pawn/
Download pliku inc na dole postu
Przykłady użycia :
Test1
Test2: można zagnieżdżać wyjątki
Test3: można łapać kilka wyjątkow na raz
i tutaj wychodzi pierwsze ograniczenie jeśli obie funkcje zgłoszą wyjątki to zostanie obsłużony tylko pierwszy czyli TestExcept2 , TestExcept zostanie w pamięci więc jeśli mamy taką sytuację powinniśmy wyczyścić pamieć z tych wyjątków w taki sposób.
poprawna implementacja
lub
jeżeli dwie funkcje zgłaszają ten sam wyjątek też warto to dodać
![;)](https://amxx.pl/public/style_emoticons/default/wink.png)
Kolejne ograniczenie to wywoływanie funkcji catch teoretycznie jeśli funkcja zgłosi wyjątek program powinien przejść od razu do bloku catch jednak nie tutaj. W naszym przypadku catch zostanie uruchomione dopiero gdy wszystkie funkcje w bloku try zostaną wykonane.
Przykład
funkcja testFunction() zgłosi wyjątek mimo to testFuncion2() się wykona dopiero wtedy catch złapie wyjątek
Download
![Załączony plik](https://amxx.pl/public/style_extra/mime_types/txt.gif)