2012-08-12 10 views
5

Ho una situazione in cui sarebbe bello essere in grado di avere un blocco catch in cui il tipo di eccezione è determinato in fase di esecuzione. Funzionerebbe qualcosa del genere:PHP: blocchi catch dinamici o programmatico

$someClassName = determineExceptionClass(); 

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

È tutto ciò possibile?

+0

Perché dovresti farlo? – Vulcan

+0

Sto lavorando su una libreria di tipi e voglio che l'utente fornisca la classe che è usata per l'eccezione. – macinjosh

risposta

5

che non funziona per quanto ne sono a conoscenza. Si potrebbe simulare tale funzionalità con una dichiarazione di controllo come questa:

$someClass = 'SomeException'; 

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

Non elegante come la mia prima idea ma funziona allo stesso modo. Grazie! – macinjosh