奇怪的是,一个表达式会产生异常而另一个表达式不会

时间:2011-04-02 12:46:00

标签: php

我遇到了一些困难......

function generateExceptionOrError() {
    throw new Exception();
}

下面的代码会显示Fatal error: Uncaught exception 'Exception'

<? generateExceptionOrError();?>

下面的代码也会显示Fatal error: Uncaught exception 'Exception'

<?=generateExceptionOrError();?>

但下面的另一个代码将是静默的,而将不会输出任何有关未处理的异常的信息。它会显示绝对没有空白页面...当然,我认为生成了异常,但为什么它没有显示!?

<link rel="stylesheet" href="<?=generateExceptionOrError();?>" type="text/css">

为什么呢?我错过了什么?

谢谢

更新:方法或其他类型的错误中没有产生差异异常。同样的情况。

2 个答案:

答案 0 :(得分:1)

我在测试中注意到的一件事是,如果在elements属性的"内发生异常,则不会显示整个元素以及之后的任何输出。它似乎可能是一个浏览器/ HTML怪癖。尝试在命令行上运行脚本,看看你得到了什么输出。

示例:

<html>
<head>
<link rel="stylesheet" href="<?php generateExceptionOrError() ?>" type="text/css">
</head>
<body>
</body>
</html>

输出:

<html>
<head>

在命令行上运行此输出:

<html>
<head>
<link rel="stylesheet" href="PHP Fatal error:  Uncaught exception 'Exception' with message 'aaa' in /var/www/projects/test.php:4
Stack trace:
#0 /var/www/projects/test.php(11): generateExceptionOrError()
#1 {main}
  thrown in /var/www/projects/test.php on line 4

请注意<link rel="stylesheet" href=",这是您所期望的。

这可能是您问题的根源。

答案 1 :(得分:-2)

错误是你无法看到的。使用firebug或查看源代码,您将在标题中看到类似的内容