第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從 Laravel 中拋出的異常中獲取 HTTP 狀態(tài)代碼?

如何從 Laravel 中拋出的異常中獲取 HTTP 狀態(tài)代碼?

PHP
喵喵時光機(jī) 2023-09-22 14:38:17
我目前正在 App/Exceptions/Handler.php 中集成一些邏輯。我希望能夠訪問 $exception 變量上的 HTTP 狀態(tài)代碼:public function report(Throwable $exception){    dd($exception->statusCode);    parent::report($exception);}但是我收到以下錯誤:ErrorException 未定義屬性:ErrorException::$statusCode當(dāng)dd($exception)我得到以下信息時:Symfony\Component\HttpKernel\Exception\NotFoundHttpException {#1214 ▼  -statusCode: 404  -headers: []  #message: ""  #code: 0  #file: "C:\Users\CEX\Documents\GitHub\unified\vendor\laravel\framework\src\Illuminate\Routing\AbstractRouteCollection.php"  #line: 43  trace: {?}}我如何訪問statusCode?
查看完整描述

3 回答

?
慕無忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個贊

如果你查看源代碼,Symfony\Component\HttpKernel\Exception\NotFoundHttpException你會發(fā)現(xiàn)它擴(kuò)展了,Symfony\Component\HttpKernel\Exception\HttpException如果你查看類的聲明,你會發(fā)現(xiàn)它$statusCode是私有的,但它有一個 getter 方法


class HttpException extends \RuntimeException implements HttpExceptionInterface

{

    private $statusCode;

    private $headers;


    public function __construct(int $statusCode, string $message = null, \Throwable $previous = null, array $headers = [], ?int $code = 0)

    {

        $this->statusCode = $statusCode;

        $this->headers = $headers;


        parent::__construct($message, $code, $previous);

    }


    public function getStatusCode()

    {

        return $this->statusCode;

    }

    //...

}


因此,您只需要$exception->getStatusCode()檢索狀態(tài)代碼(在您的情況下為 404),盡管您應(yīng)該進(jìn)行檢查以確保您的 throwable 實(shí)現(xiàn)了,因?yàn)榍闆r可能HttpExceptionInterface并不總是如此,因此該方法將不存在,您會得到致命錯誤


if ($exception instanceof \Symfony\Component\HttpKernel\Exception\HttpExceptionInterface) {

  $code = $exception->getStatusCode();

}


查看完整回答
反對 回復(fù) 2023-09-22
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊

我的做法如下,
由于這個問題相對較新,我推測您正在起訴Laravel版本7或8。根據(jù) 的文檔Error Handling,正確的頁面渲染方法現(xiàn)在如下

public function render($request, Throwable $exception)

{

? ? if ($exception instanceof CustomException) {

? ? return response()->view('errors.custom', [], 500);

? ? }


? ? return parent::render($request, $exception);

}

為了使用自定義錯誤視圖,您必須告訴您拋出的實(shí)例Laravel類型。要覆蓋內(nèi)部錯誤處理,您需要捕獲作為 HTTP 異常拋出的異常。對于這些版本,正確的類是.?所以,Exception$exceptionSymfony\Component\HttpKernel\Exception\


  1. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
    在你的頂部引入處理類app\Exceptions\Handler.php

  2. 根據(jù)您的場景將默認(rèn)的 render() 方法修改為如下所示,


use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;

? ? //

? ? //

public function render($request, Throwable $exception)

{

? ? // return parent::render($request, $exception);

? ? if ($exception instanceof HttpExceptionInterface) {

? ? ? ? if (env('APP_ENV') === 'production' && $exception->getStatusCode() == 404) {

? ? ? ? ? ? return response()->view('errors.404', [], 404);

? ? ? ? }

? ? ? ? if (env('APP_ENV') === 'production' && $exception->getStatusCode() == 500) {

? ? ? ? ? ? return response()->view('errors.500', [], 500);

? ? ? ? }

? ? }

? ? return parent::render($request, $exception);

}


查看完整回答
反對 回復(fù) 2023-09-22
?
HUH函數(shù)

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個贊

嘗試$exception->getCode()

查看完整回答
反對 回復(fù) 2023-09-22
  • 3 回答
  • 0 關(guān)注
  • 263 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號