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. 【模板】 倍增lca

    虽然很基础,但是还是复习了一下,毕竟比树剖好写... 代码: #include<iostream> #include<cstdio> #include<cmath> ...

  2. openStack logo

  3. Spark SQL 操作Hive 数据

    Spark 2.0以前版本:val sparkConf = new SparkConf().setAppName("soyo")    val spark = new SparkC ...

  4. Android 数据库

    官方文档:https://developer.android.com/training/basics/data-storage/databases.html#WriteDbRow 原帖:http:// ...

  5. php打包文件夹成zip文件

    function addFileToZip($path,$zip){    $handler=opendir($path); //打开当前文件夹由$path指定.    while(($filenam ...

  6. bzoj1089 [SCOI2003]严格n元树(dp+高精)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1899  Solved: 954[Submit][Statu ...

  7. codevs1369 xth 砍树(线段树)

    1369 xth 砍树  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond     题目描述 Description 在一个凉爽的夏夜,xth 和 rabbi ...

  8. vue打包问题:Tip: built files are meant to be served over an HTTP server.

    npm run build之后,出现提示:Tip: built files are meant to be served over an HTTP server. Opening index.html ...

  9. 安卓中Canvas实现清屏效果

    可以在代码里面添加: paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); canvas.drawPaint(paint) ...

  10. HTML中的行级标签和块级标签 《转换》

    1.html中的块级标签 显示为“块”状,浏览器会在其前后显示折行.常用的块级元素包括: <p>, <ul>,<table>,<h1~h6>等. 2.h ...