У меня есть 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, исключение не будет поймано и все равно поднимется до верхнего уровня.Что не так с обработкой исключений?