Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nieprzechwycony wyjątek. Czemu?
Fipaj
post
Post #1





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


Włączam sobie zalążek mojej aplikacji, i widzę:
Kod
"Fatal error: Uncaught exception 'Exception' with message 'Nie można odczytać sesji' in /usr/local/apache2/htdocs/simplog/biblioteki/model/sesje.php:25 Stack trace: #0 /usr/local/apache2/htdocs/simplog/biblioteki/model/sesje.php(25): sesje::odczytaj() #1 /usr/local/apache2/htdocs/simplog/index.php(20): sesje->odczytaj('tak') #2 {main} thrown in /usr/local/apache2/htdocs/simplog/biblioteki/model/sesje.php on line 25"
. Nie przechwycony wyjątek...

Oto plik sesje (kawałek):
  1. <?php
  2.  
  3. class sesje {
  4.  
  5. function __construct () {
  6. if (!session_start ()) {
  7. throw new Exception ('Nie można zainicjować sesji');
  8. }
  9. }
  10. function nowa ($nazwa, $wartosc) {
  11. if (!$_SESSION[$nazwa] = $wartosc) {
  12. throw new Exception ('Nie można utworzyć sesji');
  13. }
  14. }
  15. function zmien ($nazwa, $wartosc) {
  16. if (!$_SESSION[$nazwa] = $wartosc) {
  17. throw new Exception ('Nie można zmienić sesji');
  18. }
  19. }
  20. function odczytaj ($nazwa) {
  21. if (isset ($_SESSION[$naszwa])) {
  22. return $_SESSION[$nazwa];
  23. }
  24. else {
  25. throw new Exception ('Nie można odczytać sesji');
  26. }
  27. }
  28. function usun ($nazwa) {
  29. unset ($_SESSION[$nazwa]);
  30. }
  31. }
  32.  
  33. ?>


A to klasa model:
  1. <?php
  2.  
  3. class model {
  4. public $wynik;
  5. public $bds;
  6. public $sesje;
  7.  
  8. function __construct (MySQL $bd, sesje $sesje) {
  9. $this->bds = $bd;
  10. $this->sesje = $sesje;
  11. }
  12.  
  13. function wykonaj ($metoda) {
  14. try {
  15. $this->wynik = $metoda;
  16. }
  17. catch (Exception $e) {
  18. die ($e->getMessage ());
  19. }
  20. return $this->wynik;
  21. }
  22. }
  23.  
  24. ?>


No i wywołanie:
  1. <?php
  2. $model = new model (new MySQL ('localhost', 'root', '', 'testy'), new sesje ());
  3. $model -> wykonaj ($model -> sesje -> nowa ('tak', 'nie'));
  4. $tak = $model -> wykonaj ($model -> sesje -> odczytaj ('tak'));
  5. ?>


Czemu nie łapie wyjątku?

Dzięki za odpowiedzi!

PS. Skrypt już działa - była mała literówka. Ale znów jeśli zmienię nazwę zmiennej, mamy w pliku sesje zmienną "$naszwa" zamiast "$nazwa" to znów nie przechwyca rzuconego wyjatku....


--------------------
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 19.08.2025 - 20:19