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. 构建一个简单的基于MVC模式的JavaWeb

    零晨三点半了,刚刚几个兄弟一起出去吼歌,才回来,这应该是我大学第二次去K歌,第一次是大一吧,之后每次兄弟喊我,我都不想去,因为我还是很害怕去KTV,或许是因为那里是我伤心的地方,也或许是因为我在那里失 ...

  2. linux下查看一个文件的属性(ls,lsattr,file,stat)

    查看文件属性有多种方法,且这些方法中偏向不同,具体如下:1,ls    ls -a 查看所有文件    ls -l 查看详细的属性  2,lsattr    查看文件的扩展属性,    如果文件被 c ...

  3. Anaconda 安装和使用Numpy、Scipy、pandas、Scikit-learn

    Anaconda 安装和使用 https://www.cnblogs.com/liruihuan/p/9101613.html 最近看了些关于数据分析的书,想系统的整理下相关知识,算是学习笔记吧,也希 ...

  4. [BZOJ 1698] 荷叶池塘

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1698 [算法] 最短路 [代码] #include<bits/stdc++.h ...

  5. Luogu3403跳楼机

    https://zybuluo.com/ysner/note/1099616 题面 给你三个数\(x\),\(y\),\(z\),问你能够凑出多少个[1,\(h\)]之间的数. 解析 处理出\(y\) ...

  6. 解决macOS升级之后每次使用ssh都要输入密码的问题

      最近想趁着假期把跟了我2年mac的系统重做下.于是就开始行动了,经过大半天的数据备份.然后进行了全盘格式化,使用了在线更新的方式从新安装升级到了10.12.6.这里提醒下有类似的想法的同学可以采用 ...

  7. printf的字符型

    参  数 说  明 %s 按实际宽度输出一个字符串 %ms m指定宽度(不足时左补空格,大于时按实际宽度输出) %-ms 左对齐,不足时右补空格 %m.ns 输出占m个字符位置,其中字符数最多n个,左 ...

  8. BZOJ 3998 后缀数组

    思路: 第一问 建出来后缀数组以后  前缀和一发n-sa[i]-ht[i]+1  二分 第二问 二分判断是带重复的第几 怎么判断呢   找到它  往后扫ht递减sum+=它   跟K判判 注意等于 加 ...

  9. Mysql(Innodb)如何避免幻读

    Mysql(Innodb)如何避免幻读 有意思 MySQL InnoDB支持三种行锁定方式: 行锁(Record Lock):锁直接加在索引记录上面,锁住的是key. 间隙锁(Gap Lock):锁定 ...

  10. C++ Primer(第4版)-学习笔记-第2部分:容器和算法

    第9章 顺序容器 顺序容器和关联容器 顺序容器内的元素按其位置存储和访问. 关联容器,其元素按键(key)排序. 顺序容器(sequential container). 顺序容器的元素排列次序与元素值 ...