PHP 4 попробуете отловить альтернативу? - PullRequest
0 голосов
/ 17 ноября 2010

Может ли кто-нибудь помочь мне перевести этот код в PHP 4?

try
{
  $picture = PDF_open_image_file($PDF, "jpeg", $imgFile, "", 0); // This is the original statement, this works on PHP4
}
catch(Exception $ex)
{
  $msg = "Error opening $imgFile for Product $row['Identifier']";
  throw new Exception($msg);
}

Обычно, когда возникает фатальная ошибка, мне нужно получить $ row ['Identifier'], чтобы я знал, какой продукт вызываетошибка.

Заранее спасибо.

РЕДАКТИРОВАТЬ: я не знаю, что делает PHP_open_image_file, но иногда я получаю ошибки, как показано ниже, и мне нужно получить идентификатор продукта, который вызывает ошибку.

Неустранимая ошибка: ошибка PDFlib [1016] PDF_open_image_file: Не удалось открыть файл JPEG 'picture / b01_le1x.jpg' для чтения (файл не найден) в / var / www / html / catalog /pdf_make.php в строке 618

Ответы [ 2 ]

3 голосов
/ 17 ноября 2010

Правильно ли я предполагаю, что вы используете PDF_open_image_file () из расширения PECL pdflib?

Если это так, то он никогда не сгенерирует исключение в PHP 4. Я бы предположил, что состояния ошибки сообщаются через результат, который является целым числом и, следовательно, вероятно,

//try
if (file_exists($imgFile)) {
    $picture = PDF_open_image_file($PDF, "jpeg", $imgFile, "", 0);
}

//catch
if (!$picture) {
   $msg = "Error opening $imgFile for Product $row['Identifier']";
   print $msg;
}

Я обновил это с file_exists, чтобы предотвратить вашу фатальную ошибку.

В качестве дополнительного вопроса, почему вы пытаетесь сбросить исключение на PHP4?

0 голосов
/ 17 ноября 2010

Вы можете обнаружить некоторые проблемы, установив обработчик ошибок по умолчанию (см. PHP Manual entry ), но это не позволит вам перехватить E_ERRORS.

Я не думаю, что это будет возможно в PHP4, вам нужно будет обновить до PHP5, чтобы он выдавал исключение вместо E_ERROR. Возможно, вам удастся перехватить некоторые ошибки до того, как они произойдут - например, запустив file_exists() в вашем входном файле, но вы вряд ли сможете думать и отлавливать все ошибки, которые будет делать PDFLib.

...