代码之家  ›  专栏  ›  技术社区  ›  Aximili

PHP 4尝试捕获替代方案?

  •  0
  • Aximili  · 技术社区  · 14 年前

    有人能帮我把这段代码翻译成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_文件是做什么的,但有时我会得到如下错误,我需要得到导致错误的产品标识符。

    致命错误:PDFlib错误[1016] PDF_open_image_文件:无法打开 JPEG文件'picture/b01_le1x.jpg'用于 正在读取(找不到文件) /var/www/html/catalogue/pdf_make.php网站 在线618

    2 回复  |  直到 14 年前
        1
  •  3
  •   mario    14 年前

    我假设你在使用 PDF_open_image_file() 从pdflib PECL分机?

    如果是这样,那么它将永远不会对PHP 4抛出异常。我假设错误状态是通过结果报告的,结果是int,因此在出现错误时可能是<1。

    //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上重新抛出一个异常?

        2
  •  0
  •   thelem    14 年前

    可以通过设置默认错误处理程序来捕获一些问题(请参见 PHP Manual entry ),但这不会让您捕捉到Eêu错误。

    我认为这在PHP4中是不可能的,您需要升级到PHP5,所以它抛出一个异常而不是一个E_错误。您可能能够在某些错误发生之前捕捉到它们,例如通过运行 file_exists() 但您不太可能想到并捕获PDFLib将要发生的所有错误。