Laravel 5错误处理

3
我正在使用Laravel 5,并尝试制作自定义404页面和自定义异常处理程序,但我无法确定要放置我的代码的位置。之前有一个ErrorServiceProvider,但现在已经不存在了。有人可以给我一些指导吗?
编辑:我看到他们在App / Exception文件夹中添加了Handler类,但那仍然不是正确的放置位置,因为它完全没有遵循 Laravel 4.2中的App ::error、App ::missing和App ::fatal方法。有人有任何想法吗?

你需要将它们放入你的globals.php中 http://laravel.com/docs/4.2/errors#handling-errors - astroanu
那是 Laravel 4.2,我的问题是关于新的 Laravel 5。 - Jordan Dobrev
是的。Taylor在其中添加了一个名为Handler的Exception文件夹,可以在其中完成Laravel 5的操作。官方版本预计在接下来的几天内发布。 - Jordan Dobrev
2个回答

1
使用app/Exceptions/Handler.php的render方法可以实现此目的。L5文档 http://laravel.com/docs/5.0/errors#handling-errors
public function render($request, Exception $e)
{
    if ($e instanceof Error) {
        if ($request->ajax()) {
            return response(['error' => $e->getMessage()], 400);
        } else {
            return $e->getMessage();
        }
    }

    if ($this->isHttpException($e)) {
        return $this->renderHttpException($e);
    } else {
        return parent::render($request, $e);
    }
}

1
以下是如何在遵循.env中的APP_DEBUG设置的情况下自定义错误页面的方法。

app/Exceptions/Handler.php

public function render($request, Exception $e)
{
    if ($this->isHttpException($e))
    {
        return $this->renderHttpException($e);
    }
    else
    {
        if (env('APP_DEBUG'))
        {
            return parent::render($request, $e);
        }
        return response()->view('errors.500', [], 500);
    }
}

我认为返回一个响应比直接终止程序更好,例如: return response()->view('errors.500', [], 500); 如果需要的话,可以创建一个自定义视图来处理所有错误。 - Rodolpho Freire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接