PHP 5.4.10版本中对异常的态度是否有所改变?

时间:2013-02-25 23:03:18

标签: php

以下内容适用于PHP 5.3,但不适用于PHP 5.4.10。

throw new Custom_Exception();

class Custom_Exception extends Exception {}

PHP 5.4.10会响应以下致命错误:

  

在'...

中找不到类'Custom_Exception'

有谁知道为什么?

P.S。将类定义移到throw语句之上会修复它。

2 个答案:

答案 0 :(得分:1)

我将您的代码放入名为test.php的文件中,并下载了php-5.4.10

执行时:

php -c php.ini-development -f test.php

我看到以下输出:

PHP Fatal error:  Uncaught exception 'Custom_Exception' in test.php:3
Stack trace:
#0 {main}
  thrown in test.php on line 3

Fatal error: Uncaught exception 'Custom_Exception' in test.php:3
Stack trace:
#0 {main}
  thrown in test.php on line 3

我相信你有配置问题。你在命令行测试吗?

编辑:

我还在两个版本的zend_compile.c中比较了do_bind_inherited_class。

zend_compile.c from 5.3

zend_compile.c from 5.4.10

看起来他们只是增加了对特质的支持。

我的回答是:不,我不相信态度有所改变。

答案 1 :(得分:-3)

我认为反之亦然

class Custom_Exception extends Exception {}

throw new Custom_Exception();

因为你必须在调用之前创建子类Custom_Exception()。