Wyjątki w destruktorze
Założenie: Przedstawimy dlaczego rzucanie wyjątków w destruktorze jest złym pomysłem i pokażemy potencjalne problemy.
Krok po kroku:
- Zły przykład: Rzucanie wyjątku w destruktorze.
getMessage() . "\n"; } echo "Po bloku try-catch\n"; ?>
Ten kod pokazuje, że mimo złapania wyjątku w bloku `try-catch`, wykonanie skryptu może być przerwane w nieprzewidywalny sposób, gdyż destruktor innych obiektów może nie zostać wywołany.
- Dobry przykład: Obsługa potencjalnych błędów w metodach klasy.
getMessage()); } } } $obj = new MyClass(); $obj->myMethod(); unset($obj); // Wywołuje destruktor echo "Po wywołaniu metody i unset\n"; ?>
W tym przykładzie potencjalne błędy są obsługiwane wewnątrz metody `myMethod`, a destruktor działa poprawnie.
Podsumowanie: Powyższy przykład pokazuje, że rzucanie wyjątków w destruktorze może prowadzić do problemów. Lepiej jest obsługiwać błędy w metodach klasy, a destruktor powinien skupiać się na czyszczeniu zasobów.