PHP:动态或程序化捕获块

时间:2012-08-12 19:08:54

标签: php exception dynamic try-catch

我有一种情况,能够拥有一个在运行时确定Exception类型的catch块会很好。它可以这样工作:

$someClassName = determineExceptionClass();

try {
  $attempt->something();
} catch ($someClassName $e) {
  echo 'Dynamic Exception';
} catch (Exception $e) {
  echo 'Default Exception';
}

这一切都可能吗?

1 个答案:

答案 0 :(得分:6)

据我所知,这并不起作用。您可以使用如下控制语句来模仿该功能:

$someClass = 'SomeException';

try
{
    $some->thing();
}
catch (Exception $e)
{
    switch (get_class($e))
    {
        case $someClass:
            echo 'Dynamic exception.';
            break;
        default:
            echo 'Normal exception.';
    }
}