7

例外のタイプが実行時に決定される catch ブロックを使用できると便利な状況があります。次のように機能します。

$someClassName = determineExceptionClass();

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

これはまったく可能ですか?

4

1 に答える 1

7

私の知る限り、それは機能しません。次のような制御ステートメントを使用して、その機能を模倣できます。

$someClass = 'SomeException';

try
{
    $some->thing();
}
catch (Exception $e)
{
    switch (get_class($e))
    {
        case $someClass:
            echo 'Dynamic exception.';
            break;
        default:
            echo 'Normal exception.';
    }
}
于 2012-08-12T19:21:23.827 に答える