Как правило, это плохая идея, потому что код, генерирующий исключение, ожидает, что любой следующий код не будет выполнен, и я думаю, что это причина, почему он не реализован в php.
Но, возможно, это поможет вам сделать то, что вы пытаетесь сделать:
function try_throw($exception) {
if (!Clazz::exception_handler($exception))
throw($exception);
}
class Clazz {
private static $exceptions;
public static function foo(array $exceptions) {
set_exception_handler(array(__CLASS__, "exception_handler"));
self::$exceptions = $exceptions;
try_throw(new RandomException);
echo "I need this to be printed!";
}
public static function exception_handler($exception) {
// process the exception in my way...
// if $exception in self::$exceptions than 1, else 2, fi
return true;
// continue in some way, like it has never happenned
// to instead throw the exception the normal way
return false;
}
}