Przeglądałem listę predefiniowanych wyjątków w PHP i zauważyłem, że DomainException. Ktoś wie co oznacza DomainException? Czy oznacza to nieudaną walidację modelu danych?Kiedy rzuciłbyś wyjątek DomainException w PHP?
Odpowiedz
Jest to dość zabawne dyskusja tutaj o tym, jak nikt nie wie, co to oznacza :
http://bugs.php.net/bug.php?id=47097
od końca tego linku:
domena oznacza domenę danych tutaj. To jest i
DomainException
będzie wyrzucane za każdym razem, gdy wartość nie będzie zgodna z poprawną domeną danych zdefiniowaną jako . Przykłady:
- 0 nie należy do dziedziny podziału.
- Foo nie znajduje się w domenie w dni powszednie.
Pierwszym z nich jest różny od z zakresu i podobne, ale można użyć
InvalidParameter
w przypadku jest faktycznie parametr do funkcji który wykonuje podział. Jeśli jest to wartość obliczona w ramach funkcji przed wykonaniem podziału i , to sprawdzenie przed kondycją wyrzuca zamiast wykonywania podziału, , a następnie staje sięDomainException
.
Ten rodzaj wyjątku powinien być używany do informowania o błędach domen w sensie matematycznym.
Zobacz domain of a function.
Na przykład, funkcja pierwiastek kwadratowy zostaną określone tylko dla liczb dodatnich (chyba, że używasz liczb zespolonych ...)
Opis RangeException
jest nieco bardziej pomocne:
Wyjątek rzucony do wskazania błędów zasięgu podczas wykonywania programu. Zwykle oznacza to błąd arytmetyczny inny niż under/overflow. To jest wersja środowiska wykonawczego DomainException.
Myślę, że dotyczy to również kwestii niearametrycznych, np. zobacz ten user comment.
Na przykład, jeśli wartość spodziewać się w zestawie {'jpeg', 'png', 'gif', 'bmp'}
a otrzymasz coś innego jak 'foo'
, że to dobry kandydat na DomainException (logiki)/RangeException
(wykonawcze). Jestem pewien, że można by pomyśleć o wielu innych przypadkach użycia.
Również znalazłem ten przydatny artykuł, który dostarcza bardziej szczegółowych wyjaśnień niż php.net: How to use built-in SPL exception classes for better error handling
- 1. Kiedy należy rzucić wyjątek IllegalArgumentException?
- 2. Jak wyjątek tablicy w php
- 3. Kiedy używać interfejsów w PHP
- 4. Błąd krytyczny PHP: Niezamknięty wyjątek "Wyjątek"
- 5. Kiedy wyjątek AggregateException może zawierać więcej niż jeden wyjątek wewnętrzny?
- 6. Kiedy obiekt List.addAll() rzuca wyjątek IllegalStateException?
- 7. Destructor nie nazywa kiedy jest wyjątek
- 8. Kiedy Java's Thread.sleep rzuca wyjątek InterruptedException?
- 9. Kiedy kończy się sesja PHP?
- 10. (Kiedy) powinienem użyć podpowiedzi typu w PHP?
- 11. Kiedy używać zmiennej zmiennej w PHP?
- 12. Kiedy używać modyfikatora statycznego w PHP
- 13. PHP: Kiedy używać funkcji i kiedy używać metod statycznych?
- 14. Symfony 2.1 - Uncaught PHP Wyjątek Twig_Error_Runtime
- 15. PHP kiedy używać filter_var zamiast wbudowanych funkcji php
- 16. Wyjątek i obsługa błędów DateTime PHP
- 17. Wyjątek wywołujący kiedy TimeZoneInfo.ConvertTimeToUtc dla pewnej DateTime wartości
- 18. Kiedy należy zwrócić wartość bool, należy podać wyjątek i wyjątek, aby rzucić
- 19. Kiedy należy używać print zamiast echo w PHP?
- 20. Jak określić, kiedy kwerenda została wykonana pomyślnie w PHP PDO?
- 21. Kiedy należy zamknąć połączenie z bazą danych w PHP?
- 22. Jak wykryć, kiedy użytkownik zakończył pobieranie pliku w php
- 23. Android wyjątek w dalvikvm
- 24. Kiedy używać node.js i kiedy używać ajax?
- 25. Kiedy używać GWT i kiedy nie
- 26. Rails 3 zignorować wyjątek wyjątek wyjątek Postgres
- 27. Wyjątek "wyjątek AutoReconnect" zmienił się "
- 28. Catching wyjątek w konstruktorze
- 29. Kiedy jest InvocationTargetException.getCause() null?
- 30. Nieznany wyjątek w parseSdkContent
haha to jest całkiem zabawne +1 – oscarkuo
Lubię go wyrzucać w "domyślnej" ścieżce przełącznika, która nie ma wartości domyślnych. Załóżmy, że mam fabrykę "kawałków" do gry planszowej i mogę stworzyć "kawałek cesarza" lub "ambasadora" lub "kawałek pionka". W klasie fabrycznej mam metodę '-> create ($ typeAsString)'. Potem mam przełącznik dla "cesarza", "ambasadora", "pionka" i domyślnego. Domyślnie wyrzucam wyjątek DomainException. –