Laravel 8 Reportable & Renderable 異常

2021-07-13 17:48 更新

除了在異常處理器的 reportrender 方法中檢查異常類型外,您也可以直接在您的自定義異常中定義 reportrender 方法。當(dāng)定義了這些方法時(shí),它們將被框架自動調(diào)用:

<?php

namespace App\Exceptions;

use Exception;

class RenderException extends Exception
{
    /**
     * 報(bào)告異常
     *
     * @return void
     */
    public function report()
    {
        //
    }

    /**
     * 渲染異常為 HTTP 響應(yīng)
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function render($request)
    {
        return response(...);
    }
}

如果您的異常包含了僅在滿足某些條件時(shí)才報(bào)告的自定義報(bào)告邏輯,您可能需要指示 Laravel 使用默認(rèn)的異常處理配置去報(bào)告它。您可以在異常的 report 方法中返回 false 以實(shí)現(xiàn)之:

/**
 * 報(bào)告異常
 *
 * @return bool|void
 */
public function report()
{
    // 判斷異常是否需要自定義報(bào)告...

    return false;
} 

技巧:您可以通過類型提示傳遞任意的依賴到 report 方法中,它們將被 Laravel 的 服務(wù)容器 自動注入到方法中。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號