PHP 异常处理
PHP中的异常处理 异常处理是PHP的强大机制,用于处理运行时错误(运行时错误称为异常)。这样可以保持应用程序…
PHP中的异常处理
异常处理是PHP的强大机制,用于处理运行时错误(运行时错误称为异常)。这样可以保持应用程序的正常运行。
使用异常处理的主要目的是维护应用程序的正常执行。
什么是Exception?
异常是程序的异常结果,可以由程序本身处理。基本上,异常会破坏程序的正常流程。但这与错误不同,因为可以处理异常,而程序本身无法处理错误。
换句话说,“程序的意外结果是一个异常,可以由程序本身来处理。”可以在PHP中引发并捕获异常。
为什么需要异常处理?
PHP提供了强大的机制,异常处理。它允许您处理运行时错误,例如IOException,SQLException,ClassNotFoundException等。异常处理的最流行示例是-除以零异常,这是算术异常。
注意:当异常中断程序或应用程序的正常执行时,需要进行异常处理。
在所有编程语言中,异常处理几乎都是相似的。当发生指定的错误情况时,它将更改程序的正常流程,该情况称为异常。为此,PHP提供了以下关键字:
Try-
try块包含可能具有异常或可能发生异常的代码。当在代码运行期间try块内发生异常时,将在catch块中捕获并解决该异常。try块之后必须是catch或finally块。一个try块后面可以接一个最少的和最大数量的catch块。
Catch-
catch块包含引发指定异常时执行的代码。它总是与try块一起使用,而不是单独使用。当发生异常时,PHP查找匹配的catch块。
Throw-
它是用于引发异常的关键字。它还有助于列出函数引发但无法处理的所有异常。
请记住,每次掷球必须至少有一个“接球”。
Finally-
finally块包含一个代码,该代码用于PHP中的清理活动。基本上,它执行程序的基本代码。
触发异常时会发生什么-
- 代码的当前状态已保存。
- 代码的执行切换到预定义的异常处理程序函数。
- 根据情况,处理程序可以停止程序的执行,从保存的代码状态恢复执行,或从代码中的另一个位置继续执行代码。
异常处理优于错误处理的优势
异常处理是PHP中的重要机制,与错误处理相比,它具有以下优点-
错误类型分组-
在PHP中,基本和对象都可以作为异常抛出。它可以在类中创建异常对象和组异常的层次结构,还可以根据它们的类型对其进行分类。
将错误处理与常规代码分开-
在传统的错误处理中,if-else块用于处理错误。因为处理错误和条件的代码混合在一起,所以它使代码不可读。在try-catch块中,异常与代码保持独立,并且代码变得可读。
例子
借助示例学习如何在PHP-中进行异常处理
例子1
让我们以一个示例来说明throw和try-catch块的常见流程:
<?php //user-defined function with an exception function checkNumber($num) { if($num>=1) { //throw an exception throw new Exception("Value must be less than 1"); } return true; } //trigger an exception in a "try" block try { checkNumber(5); //If the exception throws, below text will not be display echo 'If you see this text, the passed value is less than 1'; } //catch exception catch (Exception $e) { echo 'Exception Message: ' .$e->getMessage(); } ?>
输出:
Exception Message: Value must be less than 1
示例2:创建自定义异常
您可以通过扩展Exception类来创建用户定义的异常。查看下面的代码,以了解如何创建用户定义的异常-
<?php class DivideByZeroException extends Exception { } class DivideByNegativeNoException extends Exception { } function checkdivisor($dividend, $divisor){ // Throw exception if divisor is zero try { if ($divisor == 0) { throw new DivideByZeroException; } else if ($divisor < 0) { throw new DivideByNegativeNoException; } else { $result = $dividend / $divisor; echo "Result of division = $result </br>"; } } catch (DivideByZeroException $dze) { echo "Divide by Zero Exception! </br>"; } catch (DivideByNegativeNoException $dnne) { echo "Divide by Negative Number Exception </br>"; } catch (Exception $ex) { echo "Unknown Exception"; } } checkdivisor(18, 3); checkdivisor(34, -6); checkdivisor(27, 0); ?>
输出:
Result of division = 6 Divide by Zero Exception! Divide by Negative Number Exception!
要详细了解有关try-catch块的更多信息,请单击此处。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!