这可能是一个非常简单的问题,但我找不到任何相关信息。
我使用的系统聚合了来自不同来源的大量数据,然后将这些数据存储在数据库中。在大多数情况下,系统工作正常,但有时我们会遇到一个问题,即数据可能具有我们的系统不喜欢的笨拙字符编码(例如,当数据采用另一种语言时,如法语)。
数据被传递到我们的处理服务器(我们使用 Gearman),为了确保与源相关的所有信息都被传递,我们使用我们需要的一切对数组进行 json_encode。我的问题是:如果我将 json_encode 包装在 try/catch 块中,是否会导致“PHP 警告:json_encode(): 参数中的无效 UTF-8 序列”消息触发 catch 块激活?
Thanks!
不可以,但是您可以检查函数中的返回值,并在出现问题时抛出异常。您还可以使用json_last_error http://www.php.net/manual/en/function.json-last-error.php获取有关错误的详细信息
Example:
function my_json_encode($data) {
if( json_encode($data) === false ) {
throw new Exception( json_last_error() );
}
}
try {
my_json_encode($data);
}
catch(Exception $e ) {
// do something
}
我确实发现它非常烦人,要获取实际的错误消息,您必须检查从返回的常量列表json_last_error()
。过去,我使用 switch / case 语句来实现这一点,但您可以根据错误抛出不同的异常。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)