我怎样才能在Python中执行与开放try:this except:pass
相当的操作?
我有以下代码:
$banana = true;
unserialize($banana);
它返回错误:
警告:array_keys()期望参数1为数组,布尔值为
这是预期的,因为我给它一个布尔值。
这只是一个例子;我正在使用unserialize(),但我并没有故意喂它布尔。我需要它以这种方式工作。
答案 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);