Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd działania Exception
Forum PHP.pl > Forum > PHP
Wolfie
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......
wookieb
Sprawdź skąd jest wyjątek
  1. <?php
  2. echo $e->getTraceAsString();
  3. ?>
Wolfie
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.
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.