![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Od kilku dni próbuję pojąć "rzucanie" wyjątków.
W swoich klasach "rzucam" wyjątkami przy wystąpieniu błędów typu critical dla mojej aplikacji (czyli takie, które uniemożliwiają dalsze działanie aplikacji) Powiedzmy, że wyjątki wydają mi się troszkę "nieporęczne" w użytku. Mam przykładowo: (piszę od ręki) Kod class layout { // jakieś metody function load($dir, $file) { if (file_exists(/* argumenty)) { // include }else{ // rzucam wyjątkiem throw new Exception('Nie mogę załadować pliku xxx.php'); } } } I potem w innym pliku chcąc "złapać" wyjątek... Kod try { $handle->load($plik); } catch { // obsługa błędu, czy to zapisanie loga czy wyświetlenie użytkownikowi informacji o błędzie } Według moich założeń, wyjątkami rzucałbym tylko przy błędach krytycznych, o których pisałem wyżej. I tak jest ich sporo, a używanie wszędzie try { } catch { } jest co najmniej nie wygodne. Macie jakieś swoje pomysły? Doświadczenia ? Co do łapania wyjątków i ich obsługi ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Chodzi mi o "ukrycie" try {} catch {} przy używaniu funkcji, które "rzucają" wyjątkami.
Czyli np. zamiast w index.php (gdzie muszę wczytać plik z nagłówkiem) pisać try { layout::load($file); } catch (Exception $e) { error::save($e); } wolałbym coś na wzór taki jak mam teraz: layout::load($file) Gdyż nie wyobrażam sobie pisać wszędzie gdzie "rzucam" wyjątkami tak pisać, jeszcze zapomnę i mam error ;d Teraz do zapisuj błędu mam własną klasę error w pełni statyczną. Błędy podzielone na normalne (te które nie przeszkadzają przy wczytywaniu strony) i krytyczne (te które "zabijają" działanie skryptu). @offtopic Zrobili wyjątki, interfejsy nie dość, że jest to niedopracowane to... ehh... lepiej gdyby dali możliwość np. dziedziczenia z kilku klas wielu programistom ułatwiłoby to pracę. Ten post edytował fifi209 21.03.2009, 22:32:17 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 09:56 |