Obsługa i unikanie błędów
Każdy kto kiedykolwiek pisał swój program wie, że z zasady przy pierwszej próbie tak naprawdę to on nie działa. Mówi się, że program musi nie działać przy pierwszym starcie. Tak więc wchodzimy na podłoże błędów. I tu zaczynają się schody.
Pół biedy kiedy do czynienia mamy z brakiem średnika tu czy ówdzie, problem prawdziwy pojawia się wtedy kiedy na pierwszy rzut oka wszystko działa jak należy, a wystarczy, że zabrakło jakiejś funkcji warunkowej która uodporniłaby aplikacje przed typowym idiotą.
Artykuł ten napisany jest właśnie w celu objaśnienia zagadnień związanych z błędami. Pokaże jak ich unikać, jak im zapobiegać, jak je naprawiać. Zacznę od sposobu obsługi błędów przez PHP, po czym przejdę do różnych ich typów.
Jak zacząć?
PROJEKT !! To podstawa każdego programisty. Porządny projekt pozwoli nam na uniknięcie wielu potknięć już na samym starcie. Zwracam uwagę, że nie napisałem wszystkich. Błędy zawsze będą. Nikt z nas nie jest doskonały więc dlaczego niby nasz program miałby taki być. Po projekcie – gdy już owe przeszkody się pojawią – przechodzimy do odszukania problemu aby go usunąć.
Czasami samo odpalenie programu jest nie lada wyzwaniem....można nawet rzec, że zdarza się, że większym niż samo jego zakodowanie. Bywają także momenty, gdy na localhoście wszystko pięknie działa, a gdy wrzucimy to do sieci pada. I czemu? Ano najczęściej przez użytkownika...który niejednokrotnie jest największym wrogiem naszej wspaniałej aplikacji.
Obsługa błędów w PHP
PHP jest dość specyficznym językiem choćby z racji tego, że jest wykorzystywany tylko i wyłącznie w sieci. Nie ma możliwości – tak jakby choćby w C++ - wykorzystania „standardowego wyjścia” lub „standardowego wyjścia błędów” do oddzielenia komunikatów błędów od pozostałych. PHP wyświetla wszystkie komunikaty na stronie w stworzonym przez siebie kodzie HTML. Nie jest to najlepsza sprawa, a to ze względu choćby na bezpieczeństwo.
Po pierwsze – komunikat taki ujawnia użytkownik potencjalnie słabe strony naszej witryny. Są one pomocne dla programisty w momencie testowania wszystkiego, lecz gdy wywala nam na ekran nie powołanej osoby obszerną linijkę z podaną pełną ścieżką do naszych skryptów może skończyć się to dla nas bardzo źle.
Po drugie – coś dla grafików. Komunikaty takie są po prostu nie estetyczne i brzydkie. Pojawiają się tam gdzie są najmniej potrzebne i niszczą nam cały wystrój.
Jak się przed tym wszystkim uchronić? A choćby po przez niewidoczne komunikaty błędów. Polega to na tym, że komunikat błędu umieszczony jest bezpośrednio w kod HTML tak, aby użytkownik go po prostu nie widział po przez użycie komentarzy:
<!--
Komentarz, komentarz
KOMUNIKAT BLEDU
Komentarz
-->
Można je także dynamicznie generować za pomocą JavaScript
<!--
<script language=”JavaScript”>
kod, kod
KOMUNIKAT BLEDU
Kod, kod
</script>
-->
Typy błędów
Jak już wcześniej wspomniałem błędy mogą być różne, różniste:
- Błędy składni
Są one przeważnie banalne do odszukania ponieważ gdy testujemy aplikacje pojawi nam się komunikat który nam poda linie w której ów problem występuje. Ułatwia to prace i sprawia, że można się tego szybko pozbyć.
Błędy te pojawiają się dlatego, że nie mamy możliwości tu opuszczenia ani jednego znaku. Jeżeli coś nie będzie takie jak powinno być PHP tego nie przetrawimy. Tak więc nie możemy napisać:
eco $zmienna;
Musimy być dokładni:
echo $zmienna;
Oto najczęstsze powody występowania błędów składni:
- Pomyłka przy pisaniu
- Konstrukcja jest nieprawidłowo zamknięta
- Brak średniak na końcu instrukcji
- Nieprawidłowa nazwa funkcji
- Nieprawidłowo zamknięty ciąg
- Błędy logiczne
Ten typ błędu jest niestety znacznie trudniejszy do wykrycia ponieważ na początku PHP go przetrawi bez większych problemów i wszystko na pierwszy rzut oka będzie wyglądało w porządku. Objawia się tym, że pomimo usunięcia oczywistych błędów i literówek zwracany jest niewłaściwy wynik, albo w ogóle nic nie jest zwracane. Program może nie działać odpowiednio tylko w pewnych okolicznościach. Na przykład kod PHP jest przyjmowany i wykonywany przez maszynę skryptową, ale w czasie wykonania występują błędy, które zatrzymują działanie programu – są to błędy wykonania. Jeżeli program zostanie zatrzymany to mamy do czynienia z błędami krytycznymi.
- Błędy wykonania
Istnieje wiele powodów, które sprawiają, że program może nie działać właściwie. Najczęściej zdarza się to w przypadku działania na plikach lub z bazą danych. Oto najczęstsze powody ich występowania:
- Błędy dzielenia przez zero
- Pętle nieskończone
- Funkcja nie zwracająca wyniki do dalszej częsci programu
Sposoby na uniknięcie błędów
Jak już wcześniej napisałem. Błędy będą zawsze. Jedyne co możemy zrobić to pewne zasady które pozwolą nam na zmniejszenie ich ilości, a jeśli już wystąpią to przyśpieszą ich odnalezienie. Oto kilka zasad dobrego kodowania które pozwolą Ci na uniknięcie w przyszłości wielu problemów z uruchomieniem swojej aplikacji:
- Wcinanie kodu
Tak nie wiele, a jak pomaga. Jest to szczególnie przydatne, gdy piszesz skomplikowaną funkcję albo w wyrażeniu warunkowym zagnieżdżasz kolejne. Wiadomą rzeczą jest to, że każda otwarta klamra musi być zamknięta, a gdy wszystko piszemy w jednej linii łatwo to przeoczyć dlatego wcinanie kodu jest bardzo przydatną sprawą. Sprawia, że kod jest przejrzysty, estetyczny i łatwiejszy w przyszłej modyfikacji.
- Komentowanie kodu
Także bardzo przydatna rzecz. Gdy cały nasz kod zawiera odpowiednie komentarze przyśpiesza do wyszukanie błędu, kiedy wywala nam komunikat o błędnej deklaracji funkcji albo czegoś w tym rodzaju. Wtedy tylko patrzymy co za co odpowiada i po sprawie.
- Użycie funkcji
No i znów funkcja. Jest to przydatna sprawa szczególnie przy większych projektach, kiedy to zauważamy, że w naszym dziele występuje wiele bardzo podobnych, a nawet identycznych fragmentów kodu. Umieszczamy to w funkcji i wtedy zamiast po raz kolejny wstukiwać to samo (co znacznie zwiększa ryzyko błędu) umieszczamy to w jednej w funkcji a potem tylko się do niej odwołujemy.






