如何捕捉非序列化异常?

2022-08-30 18:18:20

当生成错误时,是否可以在 PHP 上捕获异常?unserialize()


答案 1

一个简单的方法是:

$ret = @unserialize($foo);
if($ret === null){
   //Error case
}

但它不是最现代的解决方案。

最好的方法是如前所述,使用自定义错误/异常处理程序(不仅对于这种情况)。但根据你正在做的事情,它可能有些过分。


答案 2

不,你不能抓住它,不会抛出异常。unserialize()

如果传递的字符串不是不可序列化的,则返回 FALSE 并发出E_NOTICE。

您可以设置自定义异常处理程序来处理所有错误:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

推荐