Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dwa wyjątki czy konieczne?
Forum PHP.pl > Forum > Przedszkole
Fred1485
Witam znów biggrin.gif

Postanowiłem jednak stworzyć tą nakładkę dla PDO, i mam taki problem:

  1. public function prepare($query = FALSE) {
  2.  
  3. $this->query = $query;
  4.  
  5. try {
  6.  
  7. if($this->connection == FALSE || $this->query == FALSE) { //sprawdzam czy jest połączenie oraz czy przekazano query
  8.  
  9. throw new Exception('blad', 1); //tutaj jakiś przykładowy błąd jeśli nie spełnione warunki
  10. }
  11. $this->stmt = $this->connection->prepare($this->query); //tu wiadomo chyba
  12. $this->stmt->execute(); //TUTAJ TYLKO CHWILOWO żeby sprawdzić
  13. }
  14. catch(PDOException $e) {
  15. $this->error(array('text' => $e->getMessage(), 'code' => $e->getCode())); //Przekazanie do funkcji (w niej następuje na razie proste echo)
  16.  
  17. }
  18. catch(Exception $e) {
  19. $this->error(array('text' => $e->getMessage(), 'code' => $e->getCode())); //jak wyżej
  20.  
  21. }
  22. }


Jak widać tutaj wyłapuję dwa wyjątki, pierwszy od PDO jeśli w execute coś by nie poszło z zapytaniem(dlatego dałem tymczasowo w tej funkcji), natomiast drugi własny jeśli jakieś tam warunki nie zostaną spełnione, i tutaj pytanie czy ja dobrze myślę teraz z tym przechwytywaniem dwóch wyjątków, jest to poprawne, czy jakoś inaczej to powinienem rozwiązać, zauważyłem też że jak PDOException zamienię na Exception to wyjątek od PDO też zostanie wychwycony(niby logiczne wiadomo) i praktycznie wszystko to mogę rozwiązać tylko

  1. catch(Exception $e) {
  2. $this->error(array('text' => $e->getMessage(), 'code' => $e->getCode())); //jak wyżej
  3.  


Czy mam jakoś kombinować i tworzyć n wyjątków na różne potrzeby czy inaczej powinienem to rozwiązać? sad.gif
olszam
Wywal drugiego catch-a i po sprawie a w miejsce pierwszego daj exception to wyłapie ci wszystko, jak chcesz mieć coś więcej niż kod z pdo. Nigdy się nie bawiłem by dawać n wątków chyba że kiedyś raz zrobiłem tak że jak wyłapie błąd to wykona inny wątek
  1. try{
  2. ////// jakiś tam kod
  3. }catch(Exception $e){
  4. try{
  5. /////jakiś tam inny kod
  6. catch(Exception $e){
  7. //// wyświetl błąd
  8. }
  9. }

coś na podstawie tego kiedyś robiłem ale to w sumie nie był mój pomysł by tak robić tylko profesor tak chciał, a kiedy takiego przykładu używać to sam nie wiem.
Pyton_000
Tutaj musisz sobie sam określić poziom łapanych wyjątków. Albo chcesz wszystkie i zostawiasz Excepion albo tylko PDO.
Łapanie kilka wyjątków ma sens tylko gdy robisz inne akcje dla nich np. NotFoundException będzie robiło redirect 404 gdzieś tam, ale już WrongTokenException będzie Ci waliło np. 400 i fatal error w pysk.

Reasumując, zostaw sobie Albo albo.
Fred1485
O akurat w tym przypadku czy błąd zwrócony przez pdo czy rzucony przeze mnie ma byc obsłużony tak samo wiec sobie zostawię tylko jeden blok catch. Dzięki koledzy
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.