[php5] Exceptions - ищу доки

Макс

Старожил PHPClub

Profic

just Profic (PHP5 BetaTeam)
А по каким вопросам доки-то нужны. Мне в общем было достаточно того, что в http://www.php.net/zend-engine-2.php указано + инфа относительного того, что свой класс исключений должен быть исключительно наследован от Exeption.
Ну и еще немного исходников php :)

ЗЫ. Я пока ещё в доках вообще мало чего вижу про новые возможности ze2. Кстати даже классы DOM тоже не полностью докуметированы. Там например нет доки по свойствам, и кострукторам...
 

Макс

Старожил PHPClub
исходники пока не смотрел.

Непонятно, генерируются ли исключения в случае ошибок.
Вот например 2 почти идентичных примера (один на ПХП, второй - питон):
Код:
 #python
try :
   a = 1/0
except Exception:
   print "Zero Division"
работает нормально - генерирует исключение.
Вот пример на ПХП :
PHP:
try {
   $a = 1/0;   
} catch (Exception $e) {
   echo "Exception say : ".$e;
}
исключение не генерируется. Только варнинги видны.

Что я неправильно делаю ?
 

tony2001

TeaM PHPClub
>Что я неправильно делаю ?
угу

стандартные функции/конструкции PHP вызывают только варнинги/нотайсы.
эксепшены используют только новые ОО модули, например, SOAP.
в данном примере ты сам должен проверять на ноль и делать throw new Exception('..');
 

tony2001

TeaM PHPClub
Maxim Matyukhin
по поводу документации - свяжись с lovchy, документацией по новым ОО-фичам занимается он.
я думаю, он будет рад помощи.
 

Profic

just Profic (PHP5 BetaTeam)
tony2001
Кстати не подскажешь, как там с планируемой возможностью в php5.1 через declare переводить php-шные варнинги в Exception? Я где-то видел про это, но где теперь вспомнить не могу. Меня в общем интересует будет ли это или это так, просто разговоры...
 

tony2001

TeaM PHPClub
>Я где-то видел про это, но где теперь вспомнить не могу.
ну ты постарайся =)
я такого не слышал.
 

fixxxer

К.О.
Партнер клуба
PHP:
function ErrorHandler($errno, $errstr, $errfile, $errline)
{
  throw new Exception("PHP Error: $errstr in $errfile line $errline", true);
}

set_error_handler("ErrorHandler");
ы?
 

Profic

just Profic (PHP5 BetaTeam)
fixxxer
неа :) там более продвинуто :) В том смысле, что можно на ошибки из разных источников реагировать по разному :) С классическим интерфейсом тоже можно. Но гимор выловить все ошибки из кода php :)
Мне вот это нравится :)
PHP:
function do_something_with_a_file($filename) 
{ 
   // ensure that streams functions are mapped to exceptions 
   // everything else retains its current exception mapping 
   declare(exception_map='+standard:streams:*') { 
      try { 
           $fp = @fopen($filename, 'r'); 
      } catch (Exception $e) { 
           if ($e->getCode() == 'standard:streams:E_NOENT') { 
               // handle the case where the file doesn't exist 
           } 
      } 
   } 
   // now the declare block is finished, pop back to original 
   // exception mapping state 
}
-~{}~ 05.07.04 16:01:

К тому же я не думаю, что для E_NOTICE нужно кидать Exception...
 
Сверху