欢迎访问宙启技术站
智能推送

优雅处理异常与错误:PHP函数之错误处理

发布时间:2023-06-24 12:14:38

在 web 应用程序中,出现错误和异常是无法避免的。错误是程序中的一般问题,例如语法错误和类型错误。异常是不期望的事件,例如网络错误或文件不存在。在 PHP 中,当您的代码出现错误或异常时,它会向用户公开敏感信息,如文件位置和行号。要避免这种情况,请使用正确的错误处理技术。

PHP 错误处理

PHP 有三种语法错误:警告,致命错误和注意事项。警告是小问题。PHP 可以继续执行脚本并给出警告。致命错误在 PHP 中是不可恢复的错误。当发生致命错误时,PHP 会停止执行脚本。注意事项是 PHP 中的建议,但不是必须的,对您的代码没有影响。

PHP 错误处理函数

PHP 提供了一组错误处理函数,分别是 error_reporting(),set_error_handler() 和 trigger_error(),可以让开发者更好地处理错误。

error_reporting() 函数

error_reporting() 函数是 PHP 内置的一个函数。此函数为开发者提供了控制 PHP 错误报告级别的能力。通过调用此函数,开发者可以设定哪些消息等级会显示在他们的脚本运行期间。您可以使用错误报告哪些错误级别:E_ALL、E_ERROR、E_WARNING、E_NOTICE 等等。下面是一个简单的示例,演示如何禁止 PHP 显示任何警告。

error_reporting(0);

set_error_handler() 函数

自定义错误处理程序让您可以控制脚本生成的错误信息。通常,PHP 采用默认机制来处理错误和异常情况。但我们也可以通过自定义函数重新定义系统内置的错误和异常处理。使用 set_error_handler() 函数为脚本设置自定义错误处理程序。它接受一个要用于错误处理的回调函数作为参数。

trigger_error() 函数

当脚本出现错误时,我们通常希望在系统日志或其他位置中记录相关信息并将其显示给用户。PHP 提供了 trigger_error() 函数来解决这个问题。它允许我们将错误信息发送到脚本的错误处理程序,以进行处理。

PHP 异常处理

PHP 中的异常处理基于 try/catch/finally 代码块。当代码块中出现错误时,try 语句中的代码将停止运行。此时,控制流被传递到 catch 代码块运行异常处理程序。catch 代码块捕获处理程序所声明的异常。

try/expression 构造

try 句子包含文本运行一段可能出错的代码。如果它返回一个 false 值或抛出异常,则会一步一步地转到下一条文本行的 catch 块的执行范围。

catch 单元

catch 块可以接受运行时抛出的异常。在 catch 块中,我们可以根据问题的特定类型来进行处理。在下面的示例中,我们会为两种类型的异常指定不同的处理程序。

finally 单元

不管 try 块中是否发生异常,finally 运算符内的代码都会被执行。即使 try 块不存在或没有抛出异常,finally 块中的代码仍将被执行。

实践

1. 请不要暴露 PHP 错误和异常详细信息。在生产中,将错误记录到文件或数据库中,并向用户显示有意义的错误消息。

2. 请勿在开发环境中禁用 PHP 错误报告,因为在开发环境中显示 PHP 错误会帮助您调试代码。

3. 能够使用异常处理程序的尽量使用。您的代码将更可读,更易于维护,并且将提高性能。

4. 熟练掌握 PHP 错误和异常处理将使您的代码更安全,更可靠,并且更易于维护。 无论何时,您在编写自己的 PHP 代码时,无论是要接受系统错误处理还是自己实现错误处理,都要确保清楚地表达每个错误,并为用户提供有意义的错误消息。