异常代码可用于对错误进行分类。如果您想知道异常代码的用途,请继续阅读。
假设每次您的应用程序无法连接到数据库时,您都可以在错误/异常代码 214 下保存错误消息。在月底,您可以快速搜索错误号“214”并找出此错误发生了几次。这使生活更轻松。此外,错误/异常消息将为您提供有关发生情况的详细信息。
重点是同时使用异常消息和代码。从长远来看,这很有帮助。
注意:我添加了此注释,因为我之前对异常代码的用途及其用法感到困惑。
(PHP 5, PHP 7, PHP 8)
Exception::getCode — 获取异常代码
此函数没有参数。
返回异常代码作为 int 在 Exception 中,但在 Exception 的后代中可能作为其他类型(例如,在 PDOException 中作为 string)。
示例 #1 Exception::getCode() 示例
<?php
try {
throw new Exception("Some error message", 30);
} catch(Exception $e) {
echo "The exception code is: " . $e->getCode();
}
?>
上面的示例将输出类似于以下内容
The exception code is: 30
异常代码可用于对错误进行分类。如果您想知道异常代码的用途,请继续阅读。
假设每次您的应用程序无法连接到数据库时,您都可以在错误/异常代码 214 下保存错误消息。在月底,您可以快速搜索错误号“214”并找出此错误发生了几次。这使生活更轻松。此外,错误/异常消息将为您提供有关发生情况的详细信息。
重点是同时使用异常消息和代码。从长远来看,这很有帮助。
注意:我添加了此注释,因为我之前对异常代码的用途及其用法感到困惑。
在不显式定义错误代码的情况下引发异常时,getCode() 将返回整数 0
<?php
try {
throw new Exception("no code!!");
} catch (Exception $e) {
print("Code='" . $e->getCode() . "'");
}
?>
输出
Code='0'
在检查 \PDOException 中的异常代码时,不要使用严格运算符,如建议的那样。
根据文档:\PDOException 为其异常代码返回字符串,而不是整数。
在 PHP8 中遇到了以下问题
<?php
catch(\PDOException $e) {
var_dump($e->getCode()); //Output: string(5) "23000"
}
?>
getCode 最有用的技巧之一是处理尝试将重复行添加到数据库时发生的重复项条目。
有时我们不需要显示任何有关此重复的错误。
以下代码段摘自我的一个项目
<?php
//I have a mysql table called hosts with one unique key named host_name.
try {
$hosts = new Hosts(["host_name" => "www.example.com");
$hosts->save();
} catch (\PDOException $e) {
if ($e->getCode() === 23000) {
//Do nothing
}
}
?>
在这里,我保存主机名,我不关心它是否已经存在。