laravel框架的异常处理

1502  ·  2019-10-16 19:49:22  ·  长沙网站建设  ·  网站开发

异常指的是在程序运行过程中发生的异常事件,通常是由外部问题所导致的。

异常处理是程序开发中经常遇到的任务,如何优雅地处理异常,从一定程度上反映了你的程序是否足够严谨。

在本次的项目开发中,我们将异常大致分为 用户异常 和 系统异常,接下来我们将分别对其讲解和代码实现。

  1. 用户错误行为触发的异常

比如访问一个被下架的商品时触发的异常,对于此类异常我们需要把触发异常的原因告知用户。

我们暂时把这类异常命名为 InvalidRequestException,可以通过 make:exception 命令来创建:

php artisan make:exception InvalidRequestException

新创建的异常文件保存在 app/Exceptions/ 目录下:

app/Exceptions/InvalidRequestException.php

<?php

namespace App\Exceptions;

use Exception;
use Illuminate\Http\Request;

class InvalidRequestException extends Exception
{
    public function __construct(string $message = "", int $code = 400)
    {
        parent::__construct($message, $code);
    }

    public function render(Request $request)
    {
        if ($request->expectsJson()) {
            // json() 方法第二个参数就是 Http 返回码
            return response()->json(['msg' => $this->message], $this->code);
        }

        return view('pages.error', ['msg' => $this->message]);
    }
}

现在来创建这个错误页面:
`
@extends('layouts.app')
@section('title', '错误')

@section('content')
<div class="card">

<div class="card-header">错误</div>
<div class="card-body text-center">
    <h1>{{ $msg }}</h1>
    <a class="btn btn-primary" href="{{ route('root') }}">返回首页</a>
</div>

</div>
@endsection
`

屏蔽指定异常写日志可以在app/Exceptions/Handler.php中注册

protected $dontReport = [
       InvalidRequestException::class,
   ];

当一个异常被触发时,Laravel 会去检查这个异常的类型是否在 $dontReport 属性中定义了,如果有则不会打印到日志文件中。
调用异常方法

use App\Exceptions\InvalidRequestException;

 ....
   throw new InvalidRequestException('抛出错误提示');
....

本文地址:laravel框架的异常处理

在线留言

免费获取解决方案!

Write here

我们提供的产品解决方案 >>

百度SEO

01 AI万词霸屏

搜狗SEO

02 关键词优化(SEO)

SEO诊断

03 免费SEO诊断

SEO培训

04 SEO营销推广

SEO顾问

05 SEO方案定制

网站降权

06 网站降权恢复

百度SEO

07 整站优化

搜狗SEO

08 微信小程序

SEO诊断

09 微商城开发

SEO培训

10 网站竞价托管

SEO顾问

11 社区团购系统

网站降权

12 积分管理系统

为您推荐