2009-07-09 10 views

Odpowiedz

16

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.

+0

haha ​​to jest całkiem zabawne +1 – oscarkuo

+0

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. –

3

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 ...)

4

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

Powiązane problemy