gpt4 book ai didi

php - 异常代码的严重性

转载 作者:行者123 更新时间:2023-12-03 07:52:46 25 4
gpt4 key购买 nike

我正在尝试整理错误和异常处理程序。如果出现 fatal error ,我会向自己发送一条短信,如果出现其他错误,我会收到一封电子邮件。 (我在最后添加了数组,以防它们可能有用。)

对于错误有 https://php.net/manual/en/errorfunc.constants.php但我找不到任何类似的异常(exception)。

我相信我可以设置自己的异常值,但是对于一般异常是否有约定的严重级别,PDOExceptions等等。我发现提到严重性的唯一地方是 ErrorException . (我目前只使用 PDOExceptions,但正在尝试捕捉其他“一般”异常。)

严重性帮助图表在某处可用吗?我坦率地承认我正在与异常(exception)作斗争。

PS 我看过 https://www.php.net/manual/en/errorexception.getseverity.php但这看起来像是作为异常发送的错误。我现在很困惑。

错误代码数组以防万一它们有用。

$phpErrorCodes = array (
1 => "E_ERROR",
2 => "E_WARNING",
4 => "E_PARSE",
8 => "E_NOTICE",
16 => "E_CORE_ERROR",
32 => "E_CORE_WARNING",
64 => "E_COMPILE_ERROR",
128 => "E_COMPILE_WARNING",
256 => "E_USER_ERROR",
512 => "E_USER_WARNING",
1024 => "E_USER_NOTICE",
2048 => "E_STRICT E_ALL",
4096 => "E_RECOVERABLE_ERROR",
8192 => "E_DEPRECATED",
16384=> "E_USER_DEPRECATED",
32767=> "E_ALL");

$phpErrorCodesFatal = array (
1 => "E_ERROR",
16 => "E_CORE_ERROR",
64 => "E_COMPILE_ERROR",
4096 => "E_RECOVERABLE_ERROR");

$phpErrorCodesFatalNumberOnly = array (
1 ,
16 ,
64 ,
4096);

//4096 recoverable but dangerous so treated as fatal

最佳答案

异常(exception)
让我在这里尝试澄清一些误解。

Are there severity codes for exceptions?


不,所有异常(exception)情况都很严重。
异常将停止执行您的脚本。如果前面的代码无法执行,它们用于阻止执行后面的代码。

How do I know if they are important?


所有异常(exception)都很重要。当触发异常时,它会告诉开发人员代码中发生了意外情况。您编写的代码根本没有预料到会发生这种情况,为了防止未定义的行为,它应该立即停止处理。

Unhandled exceptions would show up as PHP Warning. - mario


那不是真的。任何未处理的异常都将转换为 PHP Fatal error .如果您的应用程序不知道如何处理异常情况,那么 PHP 必须立即停止!这不是您可以忽略或保持沉默的警告;这是一个致命的错误。

As a rule of thumb I should treat exceptions as fatal errors?


不必要。在极少数情况下,开发人员可能期望一段特定的代码抛出异常,这可能会被恢复或解决。代码逻辑预计会出现问题并有办法解决问题。如果异常被捕获并处理,这不会导致 fatal error 。
异常和 fatal error 之间的区别在于,您可以捕获并从异常中恢复,但不能从 fatal error 中恢复。

So if I don't do anything then exceptions turn to errors.


如果您没有捕捉到异常并且您没有实现自己的错误处理,那么 PHP 将默认使用内置的错误处理程序。逻辑是它会停止脚本并抛出错误,并将异常作为消息。然后,根据您的配置设置,此错误将记录在服务器上或显示给用户。
错误
PHP有一段糟糕的历史。早期 PHP 版本的问题之一是它在处理糟糕的代码时非常宽松。它要么尝试猜测正确的操作应该是什么,要么只是警告用户一些严重的问题。这样做的结果是,许多开发人员学会了简单地忽略警告、通知,有时甚至是错误。
在 PHP 7 中,几乎没有什么改变。
PHP 7 改变了 PHP 报告大多数错误的方式。不再通过 PHP 5 使用的传统错误报告机制来报告错误,现在大多数错误都是通过抛出 Error 来报告的。异常(exception)。错误仍然不是一个异常(exception),但它的行为就像一个。您可以捕获错误,如果没有,您仍然会看到“ fatal error : Uncaught Error :...”。
现代 PHP 功能现在将使用异常。这意味着用户态代码也应该尝试遵循相同的方法。当你的代码应该停止执行时抛出一个异常(不要使用 die/exit),并且只有在你知道如何恢复时才捕获它们。
在 future 的 PHP 版本中,通知和警告可能会更改为错误异常。现在不要忽视它们。将所有这些都视为代码中的严重问题并立即修复它们。

关于php - 异常代码的严重性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56905814/

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