Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyjątki - przewidywanie błedu, Po co rzucać błędem jeśli go przewidzieliśmy?
mimol
post
Post #1





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


Czytałem coś o wyjątkach, wiem jak się ich używa, jednak nie mam pojęcia PO CO??
Patrząc na przykład z PHPEdia
  1. <?php
  2. class Foo {
  3. // $bar powinno być liczbą całkowita
  4. public function __construct($bar) {
  5. if (!is_int($bar)) {
  6. throw new InvalidArgumentException('Argument powinien być liczbę całkowitą!');
  7. }
  8.  
  9. echo 'Konstruktor wywołany z prawidłowym argumentem!';
  10. }
  11. }
  12.  
  13. try {
  14. $str = 'aaa';
  15. $foo = new Foo($str); // wywołujemy konstruktor klasy Foo z argumentem który jest stringiem
  16.  
  17. echo 'Obiekt klasy Foo został utworzony';
  18. } catch (Exception $e) {
  19. echo $e;
  20. }?>

Jaki sens ma łapanie tutaj wyjątku ?!
Czy nie lepiej jest
  1. if (!is_int($bar)) {echo '<p onclick="java script:histroy_back()">Argumen powinien być liczbą, Popraw dane</p>'}

Wyjątki wg mnie da się wrzucić TYLKO tam gdzie MOŻE POWSTAĆ błąd! Wieć czy nie lepiej jest pisać aplikacje tak BY NIE BYŁO błędów (przynajmniej tych o których wiemy że mogą być). Zgodnie z 'Lepiej zapobiegać niż leczyć'.
Proszę o jakieś wytłumaczenie po co ich używać.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mimol
post
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


dzięki za przykłady, chyba będę musiał więcej poćwiczyć, żeby czuć kiedy używać te wyjątki

Kod
echo 'cOś jesT tu nie tak';die();
throw new XXX_Exception('cOś jesT tu nie tak');

Pewnie jest mniej profesjonalne, ale nie widzę sansu w kodzie
....
np jakiś łatwy kaluklator i w funkcji dziel (używania wyjątków [dzielenie przez 0]) przecież dużo prościej,szybciej, czytelniej jest napisanie zwyklego nie dziel przez 0 (IMG:style_emoticons/default/wink.gif)

Po prostu będę musisał wyczuć tę granicę.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 19:16