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配置的时候一般都有自动提示的,如下图所示 而我们自己自定义的配置却没有,对开发非常不友好容易打错配置,那这个是怎样实现的 ...
随机推荐
- Atcoder ARC-070
A 可以发现的是,次数的下界一定是使得 \(\frac{n(n + 1)}{2} \ge X\) 最小的 \(n\). 稍加思考可以发现,只需要在某一时刻停一下一定能在下界的次数内跳到恰好 \(X\) ...
- ExecutorService线程池简单使用
简介 ExecutorService是Java中对线程池定义的一个接口,它位于java.util.concurrent包中,在这个接口中定义了和后台任务执行相关的方法. 常用方法 public < ...
- lua语言:时间
转载请注明来源:https://www.cnblogs.com/hookjc/ 时间库函数 1.用数值表示时间值 用数字值来表示时间值,实际上时间值的本质就是一个数字值.例如:d = 11312864 ...
- NSArray 遍历
1.NSArray的下标遍历 NSArray *arr = @[p1, p2, p3, p4, p5]; for (int i = 0; i < arr.count; ++i) { Person ...
- 关于viewControllers之间的传值方式
AViewController----Push----BViewController 1.属性 AViewController---pop----BViewController 1.代理 2.通知 ...
- Mac版jdk1.6
java sdk 1.6 for mac 在苹果官网下载 https://support.apple.com/kb/DL1572?locale=zh_CN
- 3M 高可用架构----拓展
3M 高可用架构 一.MMM 1. MMM的概述 MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器)是一套支持双主故障切换和双主 ...
- App弱网测试方式
硬件设备:网络损伤仪 网络损伤模拟仪的状况包括真实广域网中存在的:有限的带宽.时延.丢包.抖动.乱序.重复报文.竞争流量.拥塞.误码等等.这些状况对网络应用来说可能会降低应用的性能,甚至有时是致命的. ...
- alpakka-kafka(10)-用kafka实现分布式近实时交易
随着网上购物消费模式热度的不断提高,网上销售平台上各种促销手段也层出不穷,其中"秒购"已经是各种网站普遍流行的促销方式了."秒购"对数据的实效性和精确性要求非常 ...
- 阿里云服务器ECS挂载数据盘—linux系统
参考阿里云官网帮助文档:https://help.aliyun.com/document_detail/25426.html 里面有些步骤说的不是很清楚,初学者可能操作时会遇到问题.通过这篇文档进行进 ...