Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Błąd działania Exception
Wolfie
post
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam,

Mam napisana prosta klase ktora dziedziczy po klasie Exception.

Wygląda ona nastepująco :

  1. <?php
  2.  
  3.    class MySqlException extends Exception {
  4.        
  5.        public function __construct($message, $errorno) {
  6.            //sprawdza czy nie ma błędów programisty ( 5000 - numer błędów wbudowanych w MySQL)
  7.            if($errorno >= 5000) {
  8.                $message = __CLASS__.' typ. Niepoprawne użycie klasy. '.$message;
  9.            } else {
  10.                $message = __CLASS__.' - '.$message;
  11.            }
  12.            //wywołanie konstruktora klasy macierzystej Exception
  13.            parent::__construct($message, $errorno);
  14.        }
  15.        
  16.        //przesłania metode toString klasy macierzystej - Exception
  17.        public function __toString() {
  18.            return ('Błąd: '.$this->code.' - '.$this->message);
  19.        }
  20.    }
  21. ?>


A oto kod objety blokiem try-catch :

  1. <?php
  2. try {
  3.        $con = new MySqlConnect(SQL_HOST, SQL_USER, SQL_PASS);
  4.        $strsql = "SELECT author, title ".
  5.            "FROM tblbooks ".
  6.            "WHERE sold = 0 AND cat = '$category' ".
  7.            "ORDER BY author LIMIT $recordoffset, ". PERPAGE;
  8.        
  9.        //pobiera zestaw rekordow
  10.        $rs = $con->createResultSet($strsql, SQL_DB);
  11.        echo '<div style="text-align:center">';
  12.        while($row = $rs->getRow()) {
  13.            echo $row[0]." - ".$row[1];
  14.            echo "<br />\n";
  15.        }
  16.        echo "<br />";
  17.        echo "</div>\n";
  18.        
  19.        $pagename = basename($_SERVER['PHP_SELF']);
  20.        //całkowita liczba rekordów
  21.        $totalrecords = $rs->getUnlimitedNumberRows();
  22.        $numpages = ceil($totalrecords/PERPAGE);
  23.        //tworzy parametr category
  24.        $otherparameter = "&amp;category=$category";
  25.        if($numpages > 1) {
  26.            $nav = new PageNavigator($pagename, $totalrecords, PERPAGE, $recordoffset, 4, $otherparameter);
  27.            echo $nav->getNavigator();
  28.        }
  29.    } catch(MySqlException $e) {
  30.        echo $e;
  31.        exit();
  32.    }
  33.    catch(Exception $e) {
  34.        echo $e;
  35.        exit();
  36.    }
  37. ?>


Problem polega na tym, iż mimo ze nie ma żadnego błędu klasa MySqlException i tak sie uruchamia i na ekranie zamiast właściwej treści pojawia sie takie cos : (pochodzi z mojej klasy MySqlException)

Cytat
Błąd: 0 - MySqlException -


Zanim wstawilem do kodu blok try-catch wszystko bylo ok......
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Sprawdź skąd jest wyjątek
  1. <?php
  2. echo $e->getTraceAsString();
  3. ?>


--------------------
Go to the top of the page
+Quote Post
Wolfie
post
Post #3





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Ok juz sobie poradzilem recznie, był błąd w konstruktorze klasy MySqlConnect, brakowało operatora "!" ktory odpowiadal za warunek nieudanego połączenia i wyrzucenai błedu.
Go to the top of the page
+Quote Post

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 - 18:13