尝试除了PHP

时间:2014-02-12 09:24:57

标签: php

我怎样才能在Python中执行与开放try:this except:pass相当的操作?

我有以下代码:

$banana = true;
unserialize($banana);

它返回错误:

  

警告:array_keys()期望参数1为数组,布尔值为

这是预期的,因为我给它一个布尔值。

这只是一个例子;我正在使用unserialize(),但我并没有故意喂它布尔。我需要它以这种方式工作。

2 个答案:

答案 0 :(得分:2)

由于unserialize不会抛出异常,因此无需捕获任何内容。 其中一个解决方法是使用静音运算符(@)并检查是否 unserialize方法的结果等于false。

$foo = @unserialize($bar);
if ($foo === false && $bar !== 'b:0;') {
    // Unserialize went wrong
}

答案 1 :(得分:2)

set_error_handler(function ($errno, $errstr) {
    throw new Exception($errstr, 0);
}, E_NOTICE);

try {
    $result = unserialize($banana); // correct
} catch (Exception $e) {
    $result = array();  // default value
}
restore_error_handler();


print_r($result);