Laravel自定义错误提示,自定义异常类提示,自定义错误返回信息,自定义错误页面
方法一
新增CustomException.php文件
App\Exceptions\CustomException.php
<?php
namespace App\Exceptions;
use Exception;
/**
* 王召波自定义异常基类
* Class BaseException
* @package App\Exceptions
*/
class CustomException extends Exception
{
/**
* 状态码
* @var int|mixed
*/
public $code = 200;
/**
* 错误具体信息
* @var mixed|string
*/
public $message = 'json';
/**
* 构造函数,接收关联数组
* BaseException constructor.
* @param array $params
*/
public function __construct($params = [])
{
parent::__construct();
if (!is_array($params)) {
return ;
}
if (array_key_exists('code', $params)) {
$this->code = $params['code'];
}
if (array_key_exists('msg', $params)) {
$this->message = $params['msg'];
}
}
public function report()
{
//
}
public function render($request)
{
$result = [
'code' => $this->code,
'msg' => $this->message,
];
//记录日志
// Log::error($this->message);
if($request->ajax()){
return response()->json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}else{
$params = [
'msg' => $this->message,
'wait' => 3,
'url' => 'javascript:history.back(-1);',
];
return response()->view('common.error', $params, 500);
}
}
}
方法二
1.新增CustomException.php文件
App\Exceptions\CustomException.php
<?php
namespace App\Exceptions;
/**
* 王召波自定义异常基类
* Class BaseException
* @package App\Exceptions\Custom
*/
class CustomException extends \Exception
{
/**
* 状态码
* @var int|mixed
*/
public $code = 200;
/**
* 错误具体信息
* @var mixed|string
*/
public $message = 'json';
/**
* 构造函数,接收关联数组
* BaseException constructor.
* @param array $params
*/
public function __construct($params = [])
{
parent::__construct();
if (!is_array($params)) {
return ;
}
if (array_key_exists('code', $params)) {
$this->code = $params['code'];
}
if (array_key_exists('msg', $params)) {
$this->message = $params['msg'];
}
}
}
2.修改render()方法
App\Exceptions\Handler.php
public function render($request, Exception $exception)
{
if ($exception instanceof CustomException) {
// 如果是自定义的异常
$this->code = $exception->code;
$this->message = $exception->message;
$result = [
'code' => $this->code,
'msg' => $this->message,
];
//记录日期
Log::error($exception->message);
if($request->ajax()){
return response()->json($result)->setEncodingOptions(JSON_UNESCAPED_UNICODE);
}else{
$params = [
'msg' => $this->message,
'wait' => 3,
'url' => 'javascript:history.back(-1);',
];
return response()->view('common.error', $params, 500);
}
}
return parent::render($request, $exception);
}
测试
throw new \App\Exceptions\CustomException(['msg'=>'王召波自定义错误','code'=>400]);
Laravel自定义错误提示,自定义异常类提示,自定义错误返回信息,自定义错误页面的更多相关文章
- springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑. 1.1 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeEx ...
- PHP 错误与异常 笔记与总结(13 )自定义异常类
针对不同的异常,进行不同的处理,可以通过自定义异常类记录特定的异常信息来处理不同类型的异常.自定义异常类通过继承基类(Exception),对基类进行扩展. 自定义异常类 <?php heade ...
- 自定义iOS 中推送消息 提示框
看到标题你可能会觉得奇怪 推送消息提示框不是系统自己弹出来的吗? 为什么还要自己自定义呢? 因为项目需求是这样的:最近需要做 远程推送通知 和一个客服系统 包括店铺客服和官方客服两个模块 如果有新的消 ...
- error C2825: '_Iter': 当后面跟“::”时必须为类或命名空间 -- 原因可能是参数错误或者自定义函数名和库函数名冲突
今天运行程序的时候遇到了下面这个bug > B1020.cpp >e:\vs2013\vs2013_rtm_ult_chs\data\vc\include\xutility(): erro ...
- 自定义 Material Design风格的提示框
关闭 自定义 Material Design风格的提示框 2016-04-24 10:55 152人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. 其实在14年谷歌 ...
- Android 代码库(自定义一套 Dialog通用提示框 )
做Android开发五年了,期间做做停停(去做后台开发,服务器管理),当回来做Android的时候,发现很生疏,好些控件以前写得很顺手,现在好像忘记些什么了,总要打开这个项目,打开那个项目 ...
- Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志
在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法), 发现出现异常时,log4j无法在控制台输出错误日志.因此需要自定义 ...
- uwp - ContentDialog - 自定义仿iphone提示框,提示框美化
原文:uwp - ContentDialog - 自定义仿iphone提示框,提示框美化 为了实现我想要的效果花费了我很长时间,唉,当初英语不好好学,翻官网翻了半天才找到,分享给刚入门的新手. 首先看 ...
- Spring Boot自定义配置实现IDE自动提示
一.背景 官方提供的spring boot starter的配置项,我们用IDE配置的时候一般都有自动提示的,如下图所示 而我们自己自定义的配置却没有,对开发非常不友好容易打错配置,那这个是怎样实现的 ...
随机推荐
- Dart 2.16 现已发布
文 / Michael Thomsen, Dart 产品经理 Dart 2.16 正式发布 Dart 2.16 正式版已于上周发布.尽管没有新的语言特性加入,但本次版本发布包含了数个问题修复 (包括对 ...
- vivo直播应用技术实践与探索
一.概述 2019年vivo直播平台立项,初期与优秀的顶部直播平台进行联运直播开发,进行市场,产品和技术的初步探索:再到后来为了丰富直播的内容和形式,开始自己独立探索:之后,我们结合vivo现阶段的直 ...
- JDBC工具包commons-dbutils的基本介绍
感谢原文作者:simonXi-tech 原文链接:https://blog.csdn.net/simonforfuture/article/details/90480147 更多请查阅在线API文档: ...
- JVM学习五:性能监控工具
一.系统性能监控 系统性能工具用于确定系统运行的整体状态,基本定位问题所在. Linux – uptime • 系统时间 • 运行时间 n 例子中为7分钟 • 连接数 n 每一个终端算一个连接 • 1 ...
- Xcode全系列下载地址
Xcode全系列下载地址,不断更新dmg 格式 下载链接:http://pan.baidu.com/s/1mgyxLP2
- 问题描述 ens33 不见了
事情是这样紫的 我今天用Xshell 连接Linux 发现连接不上去百思不得其解,然后就去Linux里看 ifconfig 的配置,然后发现 ens33居然不见了,就只有lo 和 virbr() , ...
- postman中用当前时间戳做请求的入参
用postman做接口测试的,有些接口需要带上当前时间的时间戳作为请求的入参,postman支持这种功能吗? 答案是肯定的. 文中有使用时间戳的两种方法和postman常用的预定义变量. 例子中接口的 ...
- 搭建 Nginx 服务
今日内容 上一篇测试 c出现问题 web 服务 部署 Nginx 内容详细 上一篇测试 NFS共享文件步骤 - 服务端 [root@backup ~]# yum install nfs-utils r ...
- Solution -「SDOI 2016」「洛谷 P4076」墙上的句子
\(\mathcal{Description}\) Link. (概括得说不清话了还是去看原题吧 qwq. \(\mathcal{Solution}\) 首先剔除回文串--它们一定对答案产 ...
- linux 普通分区与lvm分区
安装linux系统时 有时候会提示lvm分区与标准分区 首先普及一下lvm分区:lvm是 logical volume manager (逻辑卷管理),linux环境下对磁盘分区的管理:他解决了安装系 ...