Chciałbym móc rzucić w mojej klasie php fatalny, niepoprawny błąd, gdy użytkownik mojej klasy nadużywa czegoś, czego nie zamierzałem. Nie chcę, aby on/ona mogła odzyskać zdrowie dzięki klauzuli catch. Wiem o trigger_error
, ale mogę tylko wysyłać ostrzeżenia lub powiadomienia.PHP: Błąd krytyczny wyzwalacza?
Odpowiedz
E_USER_ERROR jest stałą w kolorze.
trigger_error("Fatal error", E_USER_ERROR);
Zobacz także pierwszy przykład strony podręcznika.
bardzo ironiczne, że facet, który powiedział "Przydatny dla ludzi, którzy nie lubią czytać dokumentacji" nie zadał sobie trudu, aby przeczytać pierwszy przykład strony podręcznika. –
debug_print_backtrace();
trigger_error("As much information as you can provide, please", E_USER_ERROR);
exit();
exit() całkowicie kończy skrypt PHP. Im więcej informacji możesz podać użytkownikom lub programistom na temat błędu, tym lepiej. Kody błędów są passé.
Edycja: użycie E_USER_ERROR powinno mimo to zakończyć skrypt, więc przenieśliśmy debug_print_backtrace() przed trigger_error().
absolutnie, dodając umrzeć; lub wyjść; komenda po rzuceniu takiego błędu jest tylko w 100% pewna. Jedynym sposobem na ucieczkę od niego (spodziewać się wyłączonych funkcji php.ini) jest [runkit_function_remove] (http://php.net/manual/en/function.runkit-function-remove.php) –
Uwaga: jeśli używasz niestandardowej procedury obsługi błędów (patrz set_error_handler) E_USER_ERROR
NIE Halt/wyjście/die ile obsługi błędów zwraca false
pigułce: niestandardowe obsługi błędów skutecznie określa, czy jest traktowana E_USER_ERROR
jako śmiertelny
Bardzo prawdziwe. Jak zauważyłem w innym miejscu, można utworzyć błąd krytyczny poprzez: jeśli ($ isTestMode == 1) { eval ("noSuchFunction();"); } Ta metoda zawsze działa. –
Dzięki Brad to bardzo mi pomogło, używam funkcji obsługi błędów niestandardowych. Chociaż "obsługa błędu" wywołałem z flagą E_USER_ERROR, nie powodowało błędu "fatalnego", dopóki nie zwróciłem false z funkcji obsługi błędów. – dading84
- 1. Błąd krytyczny PHP, Gruszka?
- 2. Test PHP na błąd krytyczny
- 3. Błąd krytyczny PHP: Niezamknięty wyjątek "Wyjątek"
- 4. PHP MySQL PDO lastInsertID powoduje błąd krytyczny
- 5. PHP Błąd krytyczny: wywołanie niezdefiniowanej funkcji json_decode()
- 6. Błąd krytyczny w funkcji money_format
- 7. Błąd krytyczny: wywołanie funkcji członka
- 8. Tworzenie wyzwalacza mysql przez PHP?
- 9. Błąd krytyczny RecursiveIteratorIterator Nie znaleziono
- 10. Symfony błąd krytyczny
- 11. PHPUnit: Błąd krytyczny obsługi
- 12. Błąd krytyczny RockMongo
- 13. php Błąd krytyczny: klasa "Slim" nie została znaleziona w
- 14. Błąd krytyczny: wywołanie niezdefiniowanej funkcji imap_open() w PHP
- 15. php - Błąd krytyczny: wywołanie niezdefiniowanej funkcji mcrypt_get_iv_size() w AppServ
- 16. Błąd krytyczny: wywołanie niezdefiniowanej funkcji finfo_open() w php
- 17. PHP Błąd krytyczny: Class 'Memcached' nie znaleziono w
- 18. Błąd krytyczny: metoda niestatyczna w PHP używająca PDO dla MySQL
- 19. PHP nietypowy błąd krytyczny z „nazwa jest już w użyciu”
- 20. Błąd krytyczny: „baza danych” klasa nie znaleziono - PHP
- 21. PHP Błąd krytyczny: Zadzwoń do formatu funkcji członka() na logicznych
- 22. PHP Błąd krytyczny: Niepokój wyjątek PDOException: nie można znaleźć sterownika
- 23. Błąd krytyczny: wywołanie niezdefiniowanej funkcji mcrypt_encrypt()
- 24. Losowe błędy "Błąd krytyczny: brak pamięci"
- 25. event wyzwalacza jQuery wyzwalacza
- 26. losowe zdarzenie mongorestore (błąd krytyczny)
- 27. Błąd krytyczny: wywołanie niezdefiniowanej funkcji http_get()
- 28. Oracle utworzyć błąd wyzwalacza (bad bind variable)
- 29. DoctrineMongoDBBundle się błąd krytyczny w Symfony2
- 30. Błąd krytyczny: wywołanie niezdefiniowanej funkcji form_open() w c
Po co? Ktokolwiek wdraża twoją klasę: 1. Jest programistą. 2. Ma dostęp do źródła. 3. Może i prawdopodobnie usunie wywołanie 'trigger_error()'. – Sammitch
@ Sammitch: Chcę, aby moje intencje były jasne. Chcę pozwolić każdemu, kto używa mojego kodu, wiedzieć, że to, co robią, nie jest tym, w jaki sposób zamierzałem go użyć. Wyrzucenie wyjątku wysyła komunikat "zajmujesz się tym niezdefiniowanym zachowaniem". Chcę wysłać wiadomość: "Nie rób tego w ten sposób, zrób to w ten sposób". – DudeOnRock
Przykładowe biblioteki. Gdzie powinieneś na przykład absolutnie NIE zrobić czegoś, jeśli jakiś warunek nie jest prawdziwy. (Przydatne dla ludzi, którzy nie lubią czytać dokumentacji: P) – bwoebi