输出缓冲区错误处理

西蒂尔奇

让我们假设使用一个简单的代码片段进行模板制作,并使用输出控制(ob)

public function capture($file, array $args = array())
{
    extract($args, EXTR_SKIP);

    ob_start();

    require $file; //'foo.php'

    return ob_get_clean();
}

并且foo.php有一个错误(由错误处理程序关闭处理程序处理

<?php

echo "before";
echo $someVariable; //$someVariable is undefined here
echo "after";

输出

before <- would like to avoid
some message from the error handler

问题:是否可以避免在出错时从文件中输出任何信息?

是的,

用户名

如果使用关闭处理程序而不是错误处理程序,则它可以清除输出,因为错误处理程序只能在输出之前清除输出,因此在输出之后仍将呈现任何内容。

<?php

function error_handler()
{
    if(error_get_last()) {
        ob_get_clean();
        echo 'An error has occured.';
    }
}

register_shutdown_function('error_handler');

function capture()
{
    ob_start();

    require 'foo.php';

    return ob_get_clean();
}

echo capture();

// foo.php
<?php

echo 'before';
echo $variable;
echo 'after';

?>

这只会输出“发生错误”。

但是,除非您添加DIE()或类似于错误处理程序的内容,否则使用set_error_handler它将输出“发生了一个错误。之后”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

输出缓冲区错误处理

来自分类Dev

缓冲区溢出和集中式错误处理

来自分类Dev

带有协议缓冲区的ASP.NET WebApi-错误处理

来自分类Dev

缓冲区溢出和集中式错误处理

来自分类Dev

在 emscripten 中处理输出缓冲区

来自分类Dev

错误的深度缓冲区(至纹理)输出?

来自分类Dev

将`:map`的输出放入缓冲区

来自分类Dev

输出缓冲区是否自动刷新?

来自分类Dev

清除MIDI输出缓冲区

来自分类Dev

如何尽快输出固定缓冲区?

来自分类Dev

输出缓冲区是否自动刷新?

来自分类Dev

Cobol文件处理中的缓冲区

来自分类Dev

处理大于缓冲区大小的帧

来自分类Dev

使用 memcpy 处理缓冲区

来自分类Dev

对RxJava中的缓冲区的错误理解

来自分类Dev

zlib膨胀返回缓冲区错误

来自分类Dev

gtk文本缓冲区错误

来自分类Dev

UDP接收缓冲区错误

来自分类Dev

预期的字符缓冲区对象错误

来自分类Dev

BufferedImage错误的缓冲区大小

来自分类Dev

类型错误:数据必须是缓冲区

来自分类Dev

写入Splunk流失时出现“错误L10(输出缓冲区溢出)”

来自分类Dev

如何在输出缓冲区时查看包含文件中的php错误?

来自分类Dev

PHP输出缓冲区显示白屏,方法返回无错误

来自分类Dev

Heroku错误日志L10(输出缓冲区溢出)

来自分类Dev

如何在输出缓冲区时查看包含文件中的php错误?

来自分类Dev

## [错误]未处理:句柄不是Azure DevOps构建管道中的缓冲区CopyFilesOverSSH

来自分类Dev

为什么位缓冲区和缓冲区给我不同的输出?

来自分类Dev

嵌套的nohup错误处理输出