http://docs.php.net/errorfunc.constants dit :
E_RECOVERABLE_ERROR ( entier )
Erreur fatale rattrapable. Elle indique qu'une erreur probablement dangereuse s'est produite, mais n'a pas laissé le moteur dans un état instable. Si l'erreur n'est pas prise en charge par un handle défini par l'utilisateur (voir aussi set_error_handler() ), l'application s'arrête car il s'agissait d'un E_ERROR.
voir aussi : http://derickrethans.nl/erecoverableerror.html
par exemple
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if ( E_RECOVERABLE_ERROR===$errno ) {
echo "'catched' catchable fatal error\n";
return true;
}
return false;
}
set_error_handler('myErrorHandler');
class ClassA {
public function method_a (ClassB $b) {}
}
class ClassWrong{}
$a = new ClassA;
$a->method_a(new ClassWrong);
echo 'done.';
imprime
'catched' catchable fatal error
done.
edit : Mais vous pouvez "en faire" une exception que vous pouvez gérer avec un bloc try-catch.
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if ( E_RECOVERABLE_ERROR===$errno ) {
echo "'catched' catchable fatal error\n";
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
// return true;
}
return false;
}
set_error_handler('myErrorHandler');
class ClassA {
public function method_a (ClassB $b) {}
}
class ClassWrong{}
try{
$a = new ClassA;
$a->method_a(new ClassWrong);
}
catch(Exception $ex) {
echo "catched\n";
}
echo 'done.';
voir : http://docs.php.net/ErrorException