अद्यतन: यह php 7. में अब एक भीषण घातक त्रुटि नहीं है। इसके बजाय "अपवाद" को फेंक दिया गया है। एक "अपवाद" (डराने वाले उद्धरण में) जो अपवाद से नहीं बल्कि त्रुटि से निकला है ; यह अभी भी एक थ्रोबेबल है और इसे सामान्य ट्राइ -कैच ब्लॉक से नियंत्रित किया जा सकता है। देख https://wiki.php.net/rfc/throwable-interface
उदाहरण के लिए
<?php
class ClassA {
public function method_a (ClassB $b) { echo 'method_a: ', get_class($b), PHP_EOL; }
}
class ClassWrong{}
class ClassB{}
class ClassC extends ClassB {}
foreach( array('ClassA', 'ClassWrong', 'ClassB', 'ClassC') as $cn ) {
try{
$a = new ClassA;
$a->method_a(new $cn);
}
catch(Error $err) {
echo "catched: ", $err->getMessage(), PHP_EOL;
}
}
echo 'done.';
प्रिंट
catched: Argument 1 passed to ClassA::method_a() must be an instance of ClassB, instance of ClassA given, called in [...]
catched: Argument 1 passed to ClassA::method_a() must be an instance of ClassB, instance of ClassWrong given, called in [...]
method_a: ClassB
method_a: ClassC
done.
पूर्व php7 संस्करणों के लिए पुराना उत्तर:
http://docs.php.net/errorfunc.constants कहते हैं:
E_RECOVERABLE_ERROR (पूर्णांक)
परिवर्तनशील घातक त्रुटि। यह इंगित करता है कि संभवतः खतरनाक त्रुटि हुई, लेकिन इंजन को अस्थिर स्थिति में नहीं छोड़ा। यदि उपयोगकर्ता द्वारा परिभाषित हैंडल में त्रुटि नहीं पकड़ी जाती है (यह भी देखें set_error_handler () ), तो यह एक E_ERROR के रूप में लागू होता है।
इसे भी देखें: http://derickrethans.nl/erecoverableerror.html
जैसे
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if ( E_RECOVERABLE_ERROR===$errno ) {
echo "'catched' catchable fatal error\n";
return true;
}
return false;
}
set_error_handler('myErrorHandler');
class ClassA {
public function method_a (ClassB $b) {}
}
class ClassWrong{}
$a = new ClassA;
$a->method_a(new ClassWrong);
echo 'done.';
प्रिंट
'catched' catchable fatal error
done.
संपादित करें: लेकिन आप इसे "अपवाद" बना सकते हैं, जिसे आप एक कोशिश-पकड़ ब्लॉक के साथ संभाल सकते हैं
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if ( E_RECOVERABLE_ERROR===$errno ) {
echo "'catched' catchable fatal error\n";
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
// return true;
}
return false;
}
set_error_handler('myErrorHandler');
class ClassA {
public function method_a (ClassB $b) {}
}
class ClassWrong{}
try{
$a = new ClassA;
$a->method_a(new ClassWrong);
}
catch(Exception $ex) {
echo "catched\n";
}
echo 'done.';
देखें: http://docs.php.net/ErrorException
E_RECOVERABLE_ERROR
) के रूप में इन PHP 7 के साथ शुरू किया जा ..