如何捕捉非序列化异常?
2022-08-30 18:18:20
当生成错误时,是否可以在 PHP 上捕获异常?unserialize()
一个简单的方法是:
$ret = @unserialize($foo);
if($ret === null){
//Error case
}
但它不是最现代的解决方案。
最好的方法是如前所述,使用自定义错误/异常处理程序(不仅对于这种情况)。但根据你正在做的事情,它可能有些过分。
不,你不能抓住它,不会抛出异常。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");