【问题标题】:Laravel 5 Exception HandlingLaravel 5 异常处理
【发布时间】:2015-08-25 06:00:09
【问题描述】:

我正在开发一个 Laravel 项目,该项目将使用许多自定义异常类。我意识到 Handler 类将与条件逻辑变得非常复杂,以便检查所有这些自定义异常并触发必要的操作。到目前为止,我还没有在网上看到很多关于如何最好地构造 Handler 类或扩展 Handler 类以适应更大应用程序的好建议。有没有人有一些有用的提示?

【问题讨论】:

  • 你的问题是相当的工资。现在,我有一些想法可以帮助你,但我至少需要知道那些“必要的行动”。只是为了呈现正确的响应还是您想根据异常类型做更多的事情?
  • 根据抛出的异常类型,我将呈现新视图、触发发送给用户/管理员的电子邮件、在日志中创建记录或这些可能操作的某种组合.

标签: php laravel


【解决方案1】:

显然有很多方法可以解决这个问题。

我的想法是为所有异常创建一个接口。比如:

interface CustomException {

    /**
     * Handle the exception
     *
     * @return Response
     */
    public function handle();
}

然后您的异常实现该接口,您可以使用handle 方法来执行所有类型的操作并最终返回响应。

您的异常处理程序将如下所示:

public function render($request, Exception $e)
{
    if ($e instanceof CustomException) {
        return $e->handle();
    }

    return parent::render($request, $e);
}

(当然你也可以把接口分成render()report(),就像异常处理程序本身是结构化的一样)


由于你需要做一些日志和邮件,依赖注入可能会派上用场:

return app()->call([$e, 'handle']);

那么你就可以声明你的依赖了:

public function handle(\Illuminate\Mail\Mailer $mail){
   $mail->send(...);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 2015-05-07
    • 2014-04-22
    • 2015-05-10
    • 2015-02-18
    • 1970-01-01
    相关资源
    最近更新 更多