0

我正在尝试加载要使用 PHPExcel 阅读器对象读取的 excel 文件:

$inputFileName = $_FILES['excelimportfile']['tmp_name'];
 //Read your Excel workbook
     try {
           $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
           $objReader = PHPExcel_IOFactory::createReader($inputFileType);
           $objPHPExcel = $objReader->load($inputFileName);
         }catch(Exception $e) {
            $this->session->set_flashdata(
              'error','Error loading file "'.
               pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()
            );
            redirect('admin/zipcode');
         }

但是谁会抛出异常呢?这个$objPHPExcel = $objReader->load($inputFileName); 我认为应该使用行来生成异常。例如:

   $objPHPExcel = $objReader->load($inputFileName);
   if(!$objPHPExcel) throw new Exception($objPHPExcel->load_error(),1);

但是我在任何地方都没有发现这样的东西。现在要做什么???

4

1 回答 1

1

PHPExcel 库中的代码本身会引发异常,而不是返回 false 作为错误状态,因为您的最后一条评论似乎表明它应该这样做;这表明您并不真正了解异常是如何工作的或它们的目的是什么。

PHPExcel 从库中的任何位置抛出的异常都可以被您的代码捕获和处理,无论它们是从库中的哪个位置抛出的

load() 方法中有一大堆逻辑可以引发异常(格式错误的文件就是一个例子),但 identify() 中的逻辑也可以引发异常(如果指定的文件不存在,或者可以' 不被读取,那么 identify() 方法会抛出异常)....

但很难准确理解你在问什么。如果您查看为读者编写的代码,这些类中可以引发异常的方法都记录在 phpdoc 块中,您可以在类代码中看到实际引发异常的位置。

于 2014-02-22T07:51:07.633 回答