Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony]Wyjątki try catch
blackroger
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 0
Dołączył: 8.11.2008

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


Mam problem. Otóż mam takie coś:

  1. try
  2. {
  3. $con->beginTransaction();
  4.  
  5. $r = new Rejestracja();
  6.  
  7. $r->setLogin($request->getParameter('login'));
  8. $r->setHaslo($request->getParameter('haslo'));
  9. $r->setImie($request->getParameter('imie'));
  10. $r->setNazwisko($request->getParameter('nazwisko'));
  11. $r->setMiasto($request->getParameter('miasto'));
  12. $r->setMail($request->getParameter('mail'));
  13. $r->setData(date("Y-m-d"));
  14.  
  15. $r->save();
  16. $con->commit();
  17.  
  18. return $this->forward('register', 'thank_you');
  19. } catch(Exception $e)
  20. {
  21. $con->rollback();
  22.  
  23. return $this->forward('register', 'error');
  24. //throw($e);
  25. }
  26. //return $this->forward('register', 'thank_you');

Wszystko działa dobrze (bez throw()), gdy daje return $this->forward('register', 'thank_you'); poza blokiem try. Gdy jest w środku - pojawia się warning, dochodzi do poprawnego przekierowania a następnie catch przechwytuje i przekierowuje do error:


Dziękujemy!

Warning: Cannot modify header information - headers already sent by (output started at /usr/share/php/symfony/response/sfResponse.class.php:105) in /usr/share/php/symfony/response/sfWebResponse.class.php on line 335

Warning: Cannot modify header information - headers already sent by (output started at /usr/share/php/symfony/response/sfResponse.class.php:105) in /usr/share/php/symfony/response/sfWebResponse.class.php on line 349
Błąd transakcji!


Gdy używam throw() problem rozwiązuje się częściowo, gdyż warningi nie występują, ale w przypadku błędu blok catch przechwytuje wyjątek a throw wyrzuca błąd uniemożliwiając przeforwardowanie return $this->forward('register', 'error'); Ustawienie throw() przed czy po return forward nie załatwia sprawy.

Zaznaczam raz jeszcze, że problem występuje tylko i wyłącznie przy zastosowaniu try, catch...
Symfony Framework.

Ten post edytował Ociu 7.09.2009, 11:12:18
Powód edycji: [Ociu]: dodałem tag.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

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


Mały OT: nie wiem jak ktoś mógł wydać książkę dla symfony 1.1. Już sam pomysł na takie wydawnictwo sugeruje niepełną znajomość tematu. Jeśli faktycznie autor wypisuje tam takie rzeczy, to tylko potwierdza się moje zdanie.
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: 27.12.2025 - 05:09