1  app\exceptions 目录下 新建 Apiexception.php

<?php
namespace App\Exceptions; /***
* API 自定义异常类
*/
use Exception; class ApiException extends Exception
{ //自定义异常处理
public function SetErrorMessage($errorMsg='', $errorCode = ''){
$this->errorMsg = $errorMsg;
$this->errorCode = $errorCode;
return $this; } }

2 修改  app\exceptions\handler.php 文件

/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $exception)
{
// 如果config配置debug为true ==>debug模式的话让laravel自行处理
$debug_status = config('app.debug'); // .env文件配置
if($debug_status){
return parent::render($request, $exception);
}
return $this->handle($request, $exception);
} /**
* 异常接管
*
*/
public function handle($request, Exception $exception){
//如果是接口请求,则抛出json
if($request->is('api/*')) {
// 只处理自定义的APIException异常
if($exception instanceof \APP\Exceptions\ApiException ) { //此处写ApiException文件所处路径
$result = [
"status" => , //操作状态: 1 成功 2 失败
"errorCode"=>$exception->errorCode,
"msg" => $exception->errorMsg,
"result" => '',
];
return response()->json($result);
} //此处可以写多个自定义异常类
if($exception instanceof \APP\Exceptions\otherException ) {
$result = [
"status" => , //操作状态: 1 成功 2 失败
"errorCode"=>$exception->errorCode,
"msg" => $exception->errorMsg,
"result" => '',
];
return response()->json($result);
} # 继续写其他自定义异常
/***
* code
*
* ***/
}
return parent::render($request, $exception);
}

3 使用

<?php

namespace App\Http\Controllers\Test;
use Illuminate\Routing\Controller;
use App\Exceptions\ApiException; class IndexController extends Controller
{
public function index(){
throw (new ApiException)->SetErrorMessage("错了",''); } }

这就ok了

整体思路: 使用时候,先实例 自定义 异常。把错误信息传过去,  然后会回到 handler.php 里边显示

注意事项:

1 测试时候。要注册一个路由在访问

2 注意开启debug 在.env 文件里边

【laravel5.6】 laravel 接口 接管 自定义异常类的更多相关文章

  1. Laravel5.2中Eloquent与DB类的区别是什么?

    要了解这些先看看关于数据库组件的那些事儿(就是 Eloquent ORM) 数据库组件大概分了三层: 数据库连接层 查询构造层 应用层 来看一下每一层有哪些东西,分别对应文档的哪一部分: 数据库连接层 ...

  2. Java自定义异常类以及异常拦截器

    自定义异常类不难,但下面这个方法,它的核心是异常拦截器类. 就算是在分布式系统间进行传递也可以,只要最顶层的服务有这个异常拦截器类(下例是在 springboot 项目中) 1.自定义异常类,继承自 ...

  3. 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前 ...

  4. spring的依赖注入,为什么用接口的实现类而不是父类的继承类?

    @Resource private EmployeeService employeeService; public void setEmployeeService(EmployeeService em ...

  5. Java基础-多线程编程-1.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。

    1.随便选择两个城市作为预选旅游目标.实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市.分别用Runnable接口和Thread ...

  6. QueryRunner类 的應用,以及ResultSetHandler 接口的实现类

    1 .该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式. ResultSetHandler 接口提供了一个单独的方法:Object handle (java.sql. ...

  7. C#动态编译代码,执行一个代码片段,或者从指定文件中加载某个接口的实现类

    在项目进行中有时候会需要配置一些复杂的表达式,在程序运行的时候执行表达式,根据结果执行相应的操作,简单写了一个类Expression,利用.net的动态编译技术实现,代码如下: public clas ...

  8. Java自定义异常类

    用户可以根据自己的需要定义自己的异常类,定义异常类只需要继承Exception类即可 //================================================= // Fi ...

  9. PHP 错误与异常 笔记与总结(13 )自定义异常类

    针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常.自定义异常类通过继承基类(Exception),对基类进行扩展. 自定义异常类 <?php heade ...

随机推荐

  1. JUnit4 基本用法实例

    本教程介绍了在JUnit4中支持的基本注解. import org.junit.*; import static org.junit.Assert.*; import java.util.*; /** ...

  2. 图解DHCP的4步租约过程

    图解DHCP的4步租约过程   DHCP租约过程就是DHCP客户机动态获取IP地址的过程. DHCP租约过程分为4步: ①客户机请求IP(客户机发DHCPDISCOVER广播包): ②server响应 ...

  3. js jquery 按钮点击后 60秒之后才能点击 60秒倒计时

    var wait = 60; function time(o) { if (wait == 0) { $(o).attr("disabled", false); $(o).val( ...

  4. Java实践 — SSH远程执行Shell脚本

    1. SSH简介         SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议.SSH在连接和传送过程中会加密所有数据,可以用来在不同系统或者服务器之间进行安全连接 ...

  5. PHP数组排序函数array_multisort()函数详解(二)

    array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列 例如array_multisort($a,$b),$a,$b是两个数组,如果排 ...

  6. ubuntu16.04 桌面图标左侧,右侧,底部进行切换

    转载:https://jingyan.baidu.com/article/e52e36154e6af340c60c518c.html 传统的 Unity 桌面环境,其应用程序启动器的容器——Launc ...

  7. mysql 5.1超过默认8小时空闲时间解决办法(错误:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure)

    报错: MySQL第二天早上第一次连接超时报错, com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications lin ...

  8. DIV 自定义滚动条样式

    当内容超出容器时,容器会出现滚动条,其自带的滚动条有时无法满足我们审美要求,那么我们可以通过css伪类来实现对滚动条的自定义. 首先我们要了解滚动条.滚动条从外观来看是由两部分组成:1,可以滑动的部分 ...

  9. C#:添加web service引用

    VS2012里是这样添加web service引用的:

  10. 关于SpringMVC Json使用

    很简单的一个东西,这里就不做过多介绍了,写一个小Demo,随手记录下. 首先,在搭好SpringMVC工程环境之后,如果想用Spring自带的Json,需要额外的添加2个JAR包: 1.jackson ...