Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> exception + adodb
piczu
post
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 0
Dołączył: 4.01.2005
Skąd: piczu.info

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


Jak zrobic w Ado wlasne wyjatki?
Probowalem tak (w skrocie):
  1. <?
  2. class DAOException extends ADODB_Exception { 
  3.  
  4. private static $num = 0;
  5.  
  6. function __toString() {
  7. $msg = '<hr />ADOException<br /><br />';
  8. $msg .= ($this->getMessage()) ? $this->getMessage().'<br /><br />' : '' ;
  9. return $msg;
  10. } 
  11. }
  12.  
  13.  
  14. try {
  15. $connection = NewADOConnection($type);
  16. $connection->Connect($host,$user,$passwd,$name);
  17. if(!$connection->IsConnected()) throw new DAOException('Cannot connect');
  18. } catch (DAOException $e) {
  19. echo $e;
  20. }
  21.  
  22. ?>


ale przy "throw new" odwoluje sie do konstruktora.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Przy łapaniu wyjątków ważne sa zależności między nimi.
Jeśli łapiesz wykątek klasy głównej Exception to łapiesz ten wyjątek i wyjątki klas pochodnych po tej klasie.
Jeśli po klasie AException dziedziczy BException to jak łapiesz BException to łapiesz tylko ją, ale jak łapiesz AException to lapiesz obie.

Dlatego u Ciebie przy lapaniu DAOException nie wychwytuje ADODB_Exception.

Zawsze powinieneś lapać od szczegółowych do ogólnych.

  1. <?php
  2.  
  3. try
  4. {
  5. // ...
  6. }
  7. catch( DAOException $e )
  8. {
  9. // ...
  10. }
  11. catch( ADODB_Exception $e )
  12. {
  13. // ...
  14. }
  15. catch( Exception $e )
  16. {
  17.  // ...
  18. }
  19.  
  20. ?>
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 - 02:08