在早期版本的PHP中,我们只能处理异常。无法处理错误。在发生致命错误的情况下,它用于停止整个应用程序或应用程序的某些部分。为了克服这个问题,PHP 7添加了throwableinterface来处理异常和错误。
异常: 每当发生致命且可恢复的错误时,PHP 7都会引发异常,而不是中止完整的应用程序或脚本执行。
错误: PHP 7抛出了TypeError,ArithmeticError,ParserError和AssertionError,但警告和注意错误保持不变。使用try / catch块,可以捕获错误实例,现在,FatalErrors可以抛出错误实例。在PHP 7中,添加了throwable接口,以将两个异常分支Exception和Error联合起来,以实现throwable。
<?php class XYZ { public function Hello() { echo "class XYZ\n"; } } try { $a = new XYZ(); $a->Hello(); $a = null; $a->Hello(); } catch (Error $e) { echo "Error occurred". PHP_EOL; echo $e->getMessage() . PHP_EOL ; echo "File: " . $e->getFile() . PHP_EOL; echo "Line: " . $e->getLine(). PHP_EOL; } echo "Continue the PHP code\n"; ?>输出结果
在上面的程序中,我们将得到以下错误-
class XYZ Error occurred Call to a member function Hello() on null File: /home/cg/root/9008538/main.php Line: 11 Continue with the PHP code
注意:在上面的示例中,我们在空对象上调用方法。该catch用于处理异常,然后继续执行PHP代码。
我们将使用算术错误的DivisionByZeroError。但是,我们仍然会在除法运算符上收到警告错误。
<?php $x = 10; $y = 0; try { $z = intdiv($x , $y); } catch (DivisionByZeroError $e) { echo "Error has occured\n"; echo $e->getMessage() . PHP_EOL ; echo "File: " . $e->getFile() . PHP_EOL; echo "Line: " . $e->getLine(). PHP_EOL; } echo "$z \n"; echo " continues with the PHP code\n"; ?>输出结果
上述程序的输出将以警告错误执行-
Division by zero File: /home/cg/root/9008538/main.php Line: 5 continues with the PHP code
注意:在上面的程序中,我们捕获并报告了DivingByZeroErrorinsidetheintdiv()函数。