【发布时间】:2015-02-13 11:00:52
【问题描述】:
我有一个存储库,如果在数据库中找不到记录,它会引发异常。而不是重定向到另一个页面,我只想显示一个警告警报,因为记录对页面并不重要,而是一个“异常事件”。
最好用代码来演示一下:
// FxRateRepositoy
public function getRate(/** args **/)
{
$rate = FxRate::where(.... //query to get the rate
if (!rate)
throw new NonExistentCurrencyException(//message);
return $rate;
}
在我的 start/global.php 我有一个处理程序:
App::error(function(NonExistentCurrencyException $e)
{
Session::flash('alert', $e->getMessage());
return \\ ??
});
返回什么?我必须返回响应,否则异常继续未被捕获。我想继续到预期的页面,但在会话中闪现警报。是否可以不必在调用此方法的每个地方都使用try catch 块?
另外一个问题,假设这个异常可能在一个请求中被多次抛出,那么累积警报消息并显示它们的最佳方法是什么?我在想类似于验证messageBag 的东西。我可以只使用全局$errors 变量,还是应该为此创建一个新的、特定的消息包?
【问题讨论】:
-
为此,您应该直接在控制器中捕获异常并继续。
标签: php exception laravel laravel-4