如何捕获错误和最佳做法?

时间:2016-11-29 13:07:12

标签: laravel laravel-5 laravel-5.3

我在一个雄辩的模型上执行各种任务。

e.g。

飞行存储库

function store($request){

    $flight = new Flight;

    $flight->name = $request->name;

    $flight->save();
}

从控制器调用此方法:

public function store(FlightRepository $flight, $request){

    $flight->store($request);

}

如何应对潜在的错误?试着抓?它应放在控制器或存储库中的哪个位置?无论如何我会抓到什么异常类型?

1 个答案:

答案 0 :(得分:1)

根据Laravel 5.0及以上版本,

Laravel应用程序的任何部分抛出的所有异常,异常都被report()文件的Exception/Handler.php方法所捕获,如下所示:

<强>已更新

你的回购应该抛出这样的例外:

class CustomRepository extends Repository
{
    public function repoMethod($id)
    {
      $model = Model::find($id);

      // Throw your custom exception here ...
      if(!$model) {
          throw new CustomException("My Custom Message");
      }
    }
}

您的Handler应该像这样处理CustomException

/**
 * Report or log an exception.
 *
 * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
 *
 * @param  \Exception  $exception
 * @return void
 */
public function report(Exception $exception)
{
    // Handle your exceptions here...
    if($exception instanceof CustomException)
       return view('your_desired_view')->with('message' => $exception->getMessage());
    parent::report($exception);
}

希望这有帮助!