2012-08-12 1 views
5

実行時に例外の型が決定されるキャッチブロックを持つことができたらいいと思う状況があります。PHP:動的またはプログラムによるキャッチブロック

$someClassName = determineExceptionClass(); 

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

これはすべて可能ですか?

+0

どうしてそうする必要がありますか? – Vulcan

+0

私は並べ替えのライブラリに取り組んでおり、ユーザーは例外に使用されるクラスを提供します。 – macinjosh

答えて

5

私が知っている限り、それは動作しません。あなたは次のような制御ステートメントでその機能を模倣することができます:

$someClass = 'SomeException'; 

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

私の最初のアイデアと同じくらいエレガントではありませんが、まったく同じです。ありがとう! – macinjosh

関連する問題