Laravel:catch块中忽略了abort()帮助器

时间:2017-05-29 10:21:45

标签: php laravel laravel-5.2

如果不存在应该下载的文件,我试图抛出404页面:

try {
    $fileContents = file_get_contents($url);

    if ($fileContents === false) {
         abort(404);
    }
} catch (\Exception $e) {
    abort(404);
}

事情是,如果缺少指定$url下的文件,则抛出异常并执行catch块 - 这很好。但是,abort(404)根本不会发生。而是提供空白页面。

为什么忽略abort()?我可以在die('foo')中添加一个catch,然后就会回复。

注意 - abort()帮助源:

function abort($code, $message = '', array $headers = [])
{
    return app()->abort($code, $message, $headers);
}

1 个答案:

答案 0 :(得分:1)

我对此进行了测试,它按预期工作。检查是否有任何自定义404错误页面导致空白页面或者您设置了任何自定义异常处理程序。

try {
    $fileContents = file_get_contents($url);

    if ($fileContents === false) {
        throw new \Exception;
    }
} catch (\Exception $e) {
    abort(404);
}