首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何捕获函数“包含”PHP上的错误?

问如何捕获函数“包含”PHP上的错误?
EN

Stack Overflow用户
提问于 2011-12-22 04:53:42
回答 4查看 15K关注 0票数 4

我需要捕获函数“包括”PHP上的最后一个错误。

我用“异常”函数进行测试,但不幸的是,我在上面编写了“包括”函数。

如果我写后的函数“包括”不显示异常。

示例1:

代码语言:javascript
复制
try{
        throw new exception();
        require_once( $this->controller['path'] );
    }
    catch( exception $e )
    {
        print_r( error_get_last() );
    }

返回:.(无效)..。

示例2:

代码语言:javascript
复制
try{

        require_once( $this->controller['path'] ) OR throw new exception();;
    }
    catch( exception $e )
    {
        print_r( error_get_last() );
    }

此返回:分析错误:语法错误,意外的T_THROW

我故意在文件中创建一个语法错误来包含。这样做的目的是捕获错误,以便您可以调试它们。

有人知道怎么弄到这个吗?

伙计们!我需要捕捉语法错误。欢迎光临!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-22 05:42:08

首先,如果您使用require,它总是会杀死您的应用程序,如果文件不能包括在内。结果是无法控制的,事后你什么也做不了。如果希望控制文件包含的成功,请使用include并测试其返回值。

代码语言:javascript
复制
$success = include "foo.php";
if (!$success) {
    // the file could not be included, oh noes!
}

您可以在这方面有语法上的差异,例如:

代码语言:javascript
复制
if (!(include "foo.php")) ...

如果无法包含该文件,这将触发E_NOTICE,而您无法捕获该文件。但是这没关系,因为它将帮助您调试问题,而且在生产过程中显示错误也会被关闭(对吗?)

or throw new Exception无法工作,因为throw是一条语句,不能用于预期表达式的位置。

如果希望捕获包含的文件中的语法错误,请使用php_check_syntax/它的后续php -l <file>。

票数 9
EN

Stack Overflow用户

发布于 2011-12-22 04:59:43

require_once是一个语言结构,而不是一个函数,你不能用它做短路。

若要在包含该文件之前测试该文件是否存在,可以使用is_file()。如果要测试文件是否可读,可以使用is_readable()。

您还可能希望使用include,如果找不到文件,而不是E_COMPILE_ERROR,它会发出一个E_WARNING。

票数 5
EN

Stack Overflow用户

发布于 2011-12-22 05:11:00

我同意alex的观点,尝试用file_exists()检查错误,然后使用异常。

代码语言:javascript
复制
if(file_exists($this->controller['path'])){
    try{
       require_once( $this->controller['path'] );
    }catch(Exception $e){
          // throw error
    }
}

或者使用is_readable()

代码语言:javascript
复制
if(is_readable($this->controller['path'])){
    try{
       require_once( $this->controller['path'] );
    }catch(Exception $e){
          // throw error
    }
} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8599571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档