1.配置config.php

自定义异常路径:

// 默认AJAX 数据返回格式,可选json xml ...
'default_ajax_return' => 'json',
'exception_handle'       => '\\app\\exceptions\\ExceptionHandle',

2.

--------------------------------------------------------

<?php

namespace app\exceptions;

use think\exception\Handle;

/**
* Class ExceptionHandle
* 全局异常处理
* @package app\exceptions
*/
class ExceptionHandle extends Handle
{
/**
* 渲染方式
* @param Exception $e
* @return \think\Response
*/
public function render(\Exception $e)
{
if ($e instanceof \app\exceptions\Exception) {
return json([
'code' => $e->getCode(),
'message' => $e->getMessage()
], $e->getCode());
}
return parent::render($e);
}
}


--------------------------------------------------------

3.

---------------------------------------------------------

<?php

namespace app\exceptions;

use \Throwable;

/**
* Class Exception
* 异常基类
* @package app\exceptions
*/
class Exception extends \Exception
{
public function __construct(string $message = "", int $code = 0, Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
}
}

4.

------------------------------------

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/6/19
* Time: 11:29
*/ namespace app\ninty9api\exception; use app\exceptions\Exception; class UserException extends Exception
{
// HTTP 状态码 404,200
public $code = 400; // 错误具体信息
public $msg = '参数错误'; // 自定义的错误码
public $errorCode = 10000; /**
* UserException constructor.
* @param $message
* @param int $code
* @param null $throwable
*/
public function __construct($message, $code=0, $throwable=null)
{
if ( is_array($message)) {
if (array_key_exists('code',$message)) {
$this->code = $message['code'];
} if (array_key_exists('msg',$message)) {
$this->msg = $message['msg'];
} if (array_key_exists('errorCode',$message)) {
$this->errorCode = $message['errorCode'];
}
} parent::__construct($message, $code, $throwable);
} }
-------------------------------------------------

5.

------------------------------------------------

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/6/20
* Time: 10:37
*/ namespace app\ninty9api\exception; use Throwable; class ParameterException extends UserException
{
public $code = 400;
public $msg = '参数错误';
public $errorCode = 10000; public function __construct(string $message = "", int $code = 0, Throwable $previous = null)
{
parent::__construct($message, $code, $previous);
} /**
* @param int $code
*/
public function setCode(int $code)
{
$this->code = $code;
} /**
* @param string $msg
*/
public function setMsg(string $msg)
{
$this->msg = $msg;
} /**
* @param int $errorCode
*/
public function setErrorCode(int $errorCode)
{
$this->errorCode = $errorCode;
}
}
-------------------------------


------------------------------------------------

ThinkPHP5 自定义异常的更多相关文章

  1. tp5 ThinkPHP5 自定义异常处理类

    在项目的开发过程中异常抛出尤为重要不仅能够做出友好提示帮助掩盖我们伟大的程序员们尴尬的瞬间,还能做到提示开发人员代码白编写的错误,下面进行自定义异常抛出类,纯属个人理解,希望大家指正 首先在框架中我们 ...

  2. TODO:macOS上ThinkPHP5和Semantic-UI集成

    TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...

  3. ThinkPHP5 助手函数

    对于ThinkPHP5.0以前的版本,助手函数全部是单字母函数,但到ThinkPHP5之后,使用如下函数来代替单字母函数: 最常用: /** * 实例化Model * @param string $n ...

  4. Java异常之自定义异常

    哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...

  5. 高性能PHP框架thinkphp5.0.0 Beta发布-为API开发而设计

    ThinkPHP V5.——为API开发而设计的高性能框架 ThinkPHP5..0版本是一个颠覆和重构版本,采用全新的架构思想,引入了很多的PHP新特性,优化了核心,减少了依赖,实现了真正的惰性加载 ...

  6. JAVA自定义异常

    创建自定义异常是为了表示应用程序的一些错误类型,为代码可能发生的一个或多个问题提供新含义. 可区分代码运行时可能出现的相似问题的一个或多个错误,或给出应用程序中一组错误的特定含义. //自定义异常类需 ...

  7. 吐槽THINKPHP5命令行

    thinkphp,作为国内开源框架,一直在使用和学习. 但是实在忍不住想要吐槽一下他的开发文档,和 对初学者的不友好,建议刚接触MVC思想的人 还是尽量去使用其他框架当入门. 现在来吐槽一下think ...

  8. Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理

    在上篇随笔<Web API应用架构在Winform混合框架中的应用(1)>中我介绍了关于如何在Winfrom里面整合WebAPI,作为一个新型数据源的接入方式,从而形成了三种不同的数据提供 ...

  9. SQL Server 抛出自定义异常,由C#程序俘获之并进行相应的处理

    最近一直在找可以自定义异常,并用C#程序捕获并进行相应的处理,试了很多方法都没有成功.今天终于找到了不错的方法.所以转载并分享给大家. 摘自:http://www.cnblogs.com/scottc ...

随机推荐

  1. 51nod 1611 金牌赛事

    被亮亮D飞啦!!QWQ 这题明明是最大权闭合子图+线段树优化构图好不好 被迫考虑DP,并且考虑f[i]表示到第i个位置的最大值(第i个位置可选可不选) 对于最终的答案,我们可以分割成一段一段的,也就是 ...

  2. Generic Interfaces (C# Programming Guide)

    https://msdn.microsoft.com/en-us/library/kwtft8ak(v=vs.140).aspx It is often useful to define interf ...

  3. Bing Maps进阶系列七:Bing Maps功能导航菜单华丽的变身

    Bing Maps进阶系列七:Bing Maps功能导航菜单华丽的变身 Bing Maps Silverlight Control所提供的功能导航是非常强大的,在设计上对扩展的支持非常好,提供了许多用 ...

  4. SPOJ - QMAX3VN (4350) splay

    SPOJ - QMAX3VN 一个动态的序列 ,在线询问某个区间的最大值.关于静态序列的区间最值问题,用ST表解决,参考POJ 3264 乍一看上去 splay可以轻松解决.书上说可以用块状链表解决, ...

  5. MSP430 G2553 Timer 中断总结

    目前总共用到了四个中断向量,我觉得已经把G2553的所有定时器中断都用到了. 定时器有两个,TA0与TA1,每个定时器又有两个中断向量 1,CCR0到达时的中断,在计数模式时候很有用,平时定时器的基本 ...

  6. js的时间展示

    <script type="text/javascript">$(function() { //方法调用    showtime();        //默认加载首页  ...

  7. 八大排序算法(Python)

    一.插入排序 介绍 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据.      算法适用于少量数据的排序,时间复杂度为O(n^2).      插入 ...

  8. ie8 js编译器对象为空或不是对象的一个小问题

    昨天在遍历json串的时候碰到了如下图所示的问题,除ie8以下版本的浏览器运行都是正常的, 部分代码如下: 1 var Workmodel=function(){ 2 model_json=[ 3 { ...

  9. iOS 中OpenGL ES 优化 笔记 1

    1,避免同步和Flushing操作 OpenGL ES的命令执行通常是在command buffer中积累一定量的命令后,再做批处理执行,这样效率会更高:但是一些OpenGL ES命令必须flush ...

  10. mysql数据的操作

    一.插入数据记录 1.插入完整数据记录 INSERT INTO table_name VALUES(value1,value2......valuen); 2.插入数据记录的一部分 INSERT IN ...