在应用程序启动之前,我需要检查一些事情,如果出错了加载错误页面。所有操作都在App:before
过滤器中完成,但return
除外,因为它不起作用。以某种方式可以从before
过滤器停止应用程序吗?
答案 0 :(得分:2)
我会尝试抛出异常。您可以定义类似BootstrapException
的内容。如果App::before()
:
App::before(function ($request) {
// do checks
if (/* checks failed */) {
throw new BootstrapException;
}
});
之后,您可以在已start/global.php
来电的App::error()
中收听该异常(例如):
App::error(function (BootstrapException $exception, $code) {
return Response::view('errorpage', [], $code);
});
我对此不确定,但是将App::error()
放在App::error(function (Exception $exception, $code) { ... });
中定义的 catch all start/global.php
之前,因为每个例外情况都是如此源自Exception
,因此您的BootstrapException
将被错误处理调用捕获,而不是由您的特定错误处理代码捕获。