我有PHP代码(从Yii2应用程序运行):
public static function convertNotes($notes) {
if(is_null($notes)) {
return $notes;
}
$tmp = 'Multibyte conversion error';
try {
$tmp = iconv('UTF-16LE', 'UTF-8', $notes);
} catch (Exception $ex) {
$tmp = 'Multibyte conversion error: '+$ex->message;
}
return $tmp;
}代码尝试将UTF16LE字符串(来自数据库)转换为UTF8字符串。有时输入字符串不正确,它不是有效的UTF16LE字符串(字节序列)。在这种情况下,会引发异常:
PHP Notice – yii\base\ErrorException
iconv(): Detected an incomplete multibyte character in input string 这很好。但奇怪的是,即使我将iconv()全部封装到try/catch中,异常也不会被捕获,并且会跳到顶层而不被捕获。异常处理有什么问题?
发布于 2019-09-24 18:49:44
我们必须从Yii框架中捕获ErrorException:
try {
$tmp = iconv('UTF-16LE', 'UTF-8', $notes);
} catch (Exception $ex) {
$tmp = 'Multibyte conversion error: '+$ex->message;
} catch (yii\base\ErrorException $ex) {
$tmp = 'Multibyte conversion error (from Yii2): '.$ex->getName();
}https://stackoverflow.com/questions/58078539
复制相似问题