Otóż,mam trzy pliki
main.class.php:
<?php include_once("ConnectException.class.php"); include_once("QueryException.class.php"); class DAL { public $connection; public $selectBD; public $result; public function connect($con) { if ($this->connection==true) { } if ($this->connection==false) { throw new ConnectException($this->connection); } } public function selectDataBase($base) { } public function execute($query) { { throw new QueryException($this->connection); } } } $db = new DAL(); try { $db->connect('xxx' , 'xxx' , 'xxx'); $db->selectDataBase('zlecenia'); try { $db->execute("select * from Uzytkownicy"); } catch (Exception $queryexception) { } } catch(Exception $connectexception) { } ?>
Drugi plik ConnectException.class.php:
<?php class ConnectException extends Exception { public function __construct() { $message = "BŁAD POŁACZENIA Z DB"; parent::__construct($message, 0000); } } ?>
Trzeci plik QueryException.class.php:
<?php class QueryException extends Exception { public function __construct($connection) { $message = "BŁĄD ZAPYTANIA"; } } ?>
W tym momencie po wywołaniu main dostaję Exception "BŁAD POŁACZENIA Z DB" ? Dlaczego?
Gdy dokonam zmiany w main.class.php na:
<?php include_once("ConnectException.class.php"); include_once("QueryException.class.php"); class DAL { public $connection; public $selectBD; public $result; public function connect() { if ($this->connection==true) { } if ($this->connection==false) { throw new ConnectException($this->connection); } } public function selectDataBase($base) { } public function execute($query) { { throw new QueryException($this->connection); } } } $db = new DAL(); try { $db->connect(); $db->selectDataBase('zlecenia'); try{ $db->execute("select * from Uzytkownicy123"); } catch (Exception $queryexception) { } } catch(Exception $connectexception) { } ?>
Dostaję zwrot" Połączenie powiodło się" lecz niestety nie wyskoczył wyjątek odnośnie zapytania(nie mam tabeli Uzytkownicy123). Dlaczego ten wyjątek nie jest wyświetlany?