gpt4 book ai didi

php - 如何找出所有可能由 PHP 代码块引发的错误?

转载 作者:行者123 更新时间:2023-12-03 08:48:23 24 4
gpt4 key购买 nike

我想知道对于动态代码(而不是静态代码)会引发哪些我没有发现的错误。例如,我的代码可能运行 10 年没有抛出任何异常,然后抛出 UncaughtException

我想专门(非一般地)捕获我正在使用的方法可以抛出的每种类型的异常。我怎么知道这些方法可能会抛出什么异常?

我想非一般地捕获可能为一段 PHP 代码抛出的每种类型的错误。

可能抛出的异常示例:

PDOException
ExpiredException

现在我对所有东西都有这个:
try{
...
}catch(Exception $e){
...
}

我想用这样的东西替换它:
try{
...
}catch(PDOException $e){
...
}catch(ExpiredException $e){
...
}catch(Exception $e){
...
}

我想确信我正在捕获可以由代码部分中的方法抛出的所有不同类型的异常

如果我单独捕获所有异常,删除这部分是否安全?:
catch(Exception $e){
...
}

或者是否有方法会简单地抛出异常?

我的解决方案偏好列表(1 是最偏好的解决方案):

1:我可以打开的标志将导致 php.exe 警告我未明确捕获的每种可能类型的异常

2:一种单独检查每个方法并查看可能引发哪些错误的方法。文档是检查的唯一方法吗?或者是否有一些 IDE 或 PHP block 可以告诉我个别方法可能会抛出哪些异常?

最佳答案

您可以使用 register_shutdown_function() 设置回调函数,它将在您的 php 代码执行的每一端调用。在此回调函数中,您可以使用 error_get_last() 检查是否发生任何错误。
例如:

// Register shutdown function
register_shutdown_function("shutdownTracker");

// Define all error types you want to catch and handle
define('E_FATAL', E_ERROR | E_PARSE | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR);

function shutdownTracker() {
$error = error_get_last(); // This will return empty if no error occurs while executing php code.
if(!empty($error) && ($error['type'] & E_FATAL)) {
// Write your code here to handle you error

}
}

注意:您应该将此代码包含在您的代码之上。

关于php - 如何找出所有可能由 PHP 代码块引发的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47958860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com