2012-08-12 8 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