Try i catch w obiektówce

0

Witam czy try i catch używa sie w metodach ? Np jeśli np $liczba jest wieksza od 2 to rzucamy wyjatek i lapiemy w metodzie ?

1

Tak, jeżeli ma to sens. Np. robisz ValueObject i jesteś pewny, że nie powinna tam trafić wartość większa od 2, wtedy rzucasz wyjątek żeby mieć pewność, że taki obiekt nie zostanie utworzony, możesz też podobnie zrobić w metodzie.

1

Taka prosta metoda nie będąca częścią kontrolera i procesu przetwarzania żądania HTTP, raczej powinna po prostu rzucać wyjątek, a obsługę tego wyjątku powinieneś robić na jak najwyższym poziomie w kontrolerze. Inaczej, w samej metodzie musisz zadecydować co dalej po wystąpieniu wyjątku, a to najcześciej oznacza wykroczenie poza kompetencje danej metody. Metoda ma coś liczyć, a nie decydować, co się dzieje po wystąpieniu błędu. Jeżeli występuje błąd, po prostu rzuca wyjątek i przekazuje kompetencje dalej/wyżej.

0

To jak tutaj dodać try i catch, aby to było dobre ? https://gist.github.com/kamil161g/078bd7a315bbd59eb240b79f367fadf5

0

W tym jak to napisałeś, to powinien to łapać skrypt, a sama klasa i jej metody powinny rzucać tylko wyjątek. W tym przykładzie to skrypt jest tym kontrolerem.

0

Czyli to jest źle ? Mógłbyś mi poprawić na wskazówkę ?:D

0

Gdzie jest źle, w przykładzie nie masz nigdzie try / catch zrobionego.

1

Niedawno był podobny wątek (to akurat link na przykład jak NIE pisać wyjątków, przeczytaj całość).

0

Tom wiem bo nie wiem gdzie dać :D

0

a jakby parametr $value zadeklarować jako bool?

0

@Miang: zgadzam się z Tobą. Wg mnie wątki tutaj to przesada. Raz, że można to załatwić za pomocą języka a dwa, że to IMO nie kwalifikuje się na wyjątek :)

W takich przypadkach funkcja offsetSet mogłaby zwracać boola. Ułatwia to trochę kodzik (bez dziwnych przeskoków w wykonaniu)

if (!$p->offsetSet()) {
   // bla bla, obsługa błędu
}

// dalsze wykonanie

Dla mnie wyjątek to informacja: "zjechało się" i oznaka, że program nie może dalej działać poprawnie.
Przykład - Dokonywania płatności:

  • klient nie ma wystarczająco kasy na koncie - zwykły błąd
  • nie można dokonać płatności bo PayPal padł - to już wyjątek

czyli to co jest w obrębie poprawnego flow programu winno zwracać informację czy się udało czy nie. Wyjątek jest jak np - baza padnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1