在 PHP 8 之前,如果我们希望捕获一个异常,通常需要将其存储在一个变量中,然后检查这个变量来获取异常信息。通过这种方式,开发者可以获取异常的详细信息,如错误代码、错误消息等。
以下是 PHP 8 之前捕获异常的传统方式:
<?php
function
foo()
{
try
{
throw
new
Exception(
'Hello'
);
}
catch
(Exception
$e
) {
return
$e
->getMessage();
}
}
?>
在上面的代码中,异常通过 catch 块捕获并存储到一个变量 $e 中,之后可以通过该变量获取异常的详细信息。
PHP 8 新引入了非捕获异常捕获特性,即在捕获异常时可以不再将其存储到变量中,这意味着我们不必再关心捕获的异常对象。如果你不需要使用异常对象中的信息,可以使用这种简化的方式来捕获异常。
下面是 PHP 8 中非捕获异常捕获的示例:
<?php
try
{
throw
new
Exception(
'hello'
);
}
catch
(Exception) {
// $e 变量已省略
}
?>
在这个示例中,异常被成功捕获,但没有存储到任何变量中。这种方式对于我们只需要简单处理异常而不关心其详细信息的情况非常有用。
PHP 8 的非捕获异常捕获特性使得异常处理变得更加灵活。当你不需要访问异常对象中的信息时,可以使用简化的捕获方式,从而使代码更加简洁,提升代码的可读性和可维护性。