Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPExcel读取器异常引发_Php_Mysql_Codeigniter 2_Phpexcel_Phpexcelreader - Fatal编程技术网

PHPExcel读取器异常引发

PHPExcel读取器异常引发,php,mysql,codeigniter-2,phpexcel,phpexcelreader,Php,Mysql,Codeigniter 2,Phpexcel,Phpexcelreader,我正在尝试加载excel文件,以便使用PHPExcel reader对象读取: $inputFileName = $_FILES['excelimportfile']['tmp_name']; //Read your Excel workbook try { $inputFileType = PHPExcel_IOFactory::identify($inputFileName); $objReader = PHPExcel_IOFacto

我正在尝试加载excel文件,以便使用PHPExcel reader对象读取:

$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);

但我在任何地方都找不到这样的东西。现在该怎么办?

PHPExcel库中的代码本身会抛出异常,而不是返回false作为错误状态,正如您的上一条评论所建议的那样;这表明您并不真正理解异常是如何工作的,或者它们的目的是什么

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

load()方法中有大量逻辑可以引发异常(例如,格式错误的文件),identify()中的逻辑也可以引发异常(如果指定的文件不存在或无法读取,那么identify()方法将引发异常)


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

理论上,您的
try{…}
块中的这三个函数中的任何一个都可以引发异常。。。在这些函数中调用的函数也是一样的,一路上都是海龟。此外,当抛出异常时,您会得到它的完整堆栈,包括抛出异常的特定文件/行。表示对您声誉的尊重,并知道您是PHPExcel的作者之一,我可以说,我在这里的要求是明确PHPEx读者的异常将如何被捕获。。至少要有一些投手,因为我们都知道没有投手就没有接球的作用。所以,如果最后一行、中间行或第一行生成异常,它会自动抛出到catch块吗?这是怎么回事,先生?如果identify()、createReader()或load()方法引发任何异常,或者这些方法调用的任何方法,无论调用树有多深,它们都会被第一个示例的catch块捕获。。。。这就是异常在PHP中的工作方式,这意味着如果在我之前有4级深度的试捕。。所有这些渔获量都必须扔掉它,以便最后一个渔获量得到它(如果我错了,请纠正我)。我不同意你所说的PHP异常处理。你可以在你的shell上试试这个:根据你的意思试试{$x=strottime(“xyz”);var_dump($x);}catch(异常$e){echo“Hi”;}。。它应该印上“嗨”。但看看它印的是什么。RegardsBut PHPExcel中没有4个捕获级别:除了几个小的异常,PHPExcel会为您的脚本抛出一个异常来处理捕获。。。而且strotime()根本不会抛出异常,因此在try/catch块中包装strotime()是毫无意义的。。。异常与错误不同,除非您将错误处理改为抛出异常;您可以这样做,但这不是默认的PHP行为。异常的全部要点是,它们不必在调用堆栈的每一个级别都进行处理,它们只需将调用堆栈备份到第一个捕获