- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力确保从数据库连接问题抛出的异常得到全局处理。
我在我的 app\Exceptions\Handler.php 中的 render() 方法中添加了以下内容,但是没有捕获到任何异常:
<?php
namespace App\Exceptions;
use Exception;
use Illuminate\Database\QueryException;
use Illuminate\Validation\ValidationException;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Laravel\Lumen\Exceptions\Handler as ExceptionHandler;
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use PDOException;
class Handler extends ExceptionHandler
{
/**
* A list of the exception types that should not be reported.
*
* @var array
*/
protected $dontReport = [
AuthorizationException::class,
HttpException::class,
ModelNotFoundException::class,
ValidationException::class,
];
/**
* Report or log an exception.
*
* This is a great spot to send exceptions to Sentry, Bugsnag, etc.
*
* @param \Exception $e
* @return void
*/
public function report(Exception $e)
{
parent::report($e);
}
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
{
if ($e instanceof AuthorizationException) {
return response()->json((['status' => 403, 'message' => 'Insufficient privileges to perform this action']), 403);
}
if ($e instanceof MethodNotAllowedHttpException) {
return response()->json((['status' => 405, 'message' => 'Method Not Allowed']), 405);
}
if ($e instanceof NotFoundHttpException) {
return response()->json((['status' => 404, 'message' => 'The requested resource was not found']), 404);
}
if ($e instanceof QueryException) {
return response()->json((['id' => 0, 'status_billing' => 'The requested resource was not found']), 500);
}
if ($e instanceof PDOException) {
return response()->json((['id' => 0, 'status_billing' => 'The requested resource was not found']), 500);
}
return parent::render($request, $e);
}
}
这也被添加到我的 app.php 中:
$app->singleton( App\Exceptions\Handler::class );
我这辈子都无法让它发挥作用。
任何帮助/建议将不胜感激
谢谢
最佳答案
更改 app.php 中的以下行
$app->singleton( App\Exceptions\Handler::class );
到:
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
App\Exceptions\Handler::class
);
编辑
上述异常处理程序绑定(bind)中需要接口(interface)的原因是,当处理路由时抛出异常时,将调用以下函数来处理该异常。
protected function handleException($passable, Exception $e)
{
if (! $this->container->bound(ExceptionHandler::class) || ! $passable instanceof Request) {
throw $e;
}
$handler = $this->container->make(ExceptionHandler::class);
$handler->report($e);
return $handler->render($passable, $e);
}
if 条件检查容器是否绑定(bind)了 ExceptionHandler 类。如果存在绑定(bind),则异常将传递给该异常处理程序类以进一步处理。如果没有声明绑定(bind),那么将重新抛出异常。这里检查绑定(bind)是否有 Illuminate\Contracts\Debug\ExceptionHandler
。这就是为什么当您使用 App\Exceptions\Handler::class
直接绑定(bind)时,您的异常处理程序不会捕获异常。
关于php - 流明:异常处理程序 - 不捕获 QueryException 或 PDOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44252263/
我在执行此代码时遇到问题org.hibernate.QueryException:无法解析属性 def show = { def results = PM.createCriteria().l
我在尝试将条目插入包含地理位置数据的表时遇到问题。事实上,该表仅包含一个地理位置列,一种 Point 数据类型。我正在使用 Java JPA 和 MariaDB。最奇怪的部分是,代码曾经可以工作,但应
我正在使用 FluentNHibernate 和 Linq To Nhibernate,以及这些实体(仅相关部分): public class Player : BaseEntity { pr
我使用 NHiberNate 编写了联合查询,但收到 NHibernate.QueryException:not an Association: Id 这就是 NHibernate 库的样子 Tick
我有一个正在尝试执行的 HQL 查询,但我不断收到 QueryException。 我的查询是 SELECT a FROM (SELECT MAX(m.version) maxVersionOp, m
使用oracle DB,我们创建了一个没有PK的表(我们知道这不是一个好的做法,但我们仍然希望有人可以帮助我们),我们需要使用约束作为替代方案。我们能够将数据插入数据库,不幸的是我们无法检索,因为它会
我关闭了 EclipseLink 缓存,因为我正在外部修改数据,并且不希望遇到手动刷新所有内容的麻烦。显然,这是在 persistence.xml 中关闭缓存以避免对象身份问题的正确方法:
使用 JPA 2.0、Java EE 5、Weblogic 10.3 (11g)、JDK 6、EclipseLink。 当我尝试运行它时: CriteriaQuery _criteriaquery
我已经在本地主机中创建了数据库 Illuminate\Database\QueryException : SQLSTATE[HY000] [1045] Access denied for user
我想通过限制在 Hibernate 中的条件添加订单。 我有两个表 Event 和 MainEvent 与一对多的关系(一个 MainEvent 有很多事件)。 final Criteria
我正在尝试使用 Hibernate 连接到数据库。当前表格具有以下布局: (field1, field2, field3, optional1, optional2...) 其中 field1、fie
这是此错误的另一种情况: 21:22:15,881 ERROR [SessionFactoryImpl] Error in named query: ch.software.gvs.TroubleNo
这是我的查询 SQL_QUERY="SELECT review.comment FROM ReviewDO review WHERE title='"+titleName+"'"; 我试图通过使用标题
我有一个 org.hibernate.QueryException,我很难理解为什么。 hibernate 未解析的属性 langue_id 在我的实体 Conditionnement 中定义。 堆栈
我想在laravel中注册时遇到问题。完成注册表后,我看到此错误消息: QueryException in Connection.php line 770:SQLSTATE[HY000] [1045]
这是我尝试处理重复条目的模型代码: $userData = ['name' => $name, 'email' => $email, 'password' => $password]; publ
我在 Laravel 应用程序中工作,并通过 user_id 列将 users 表与 posts 表相关联。 posts 表中已有 user_id 列。但是当我运行 php artisan db:se
我正面临一种奇怪的问题,不知道该往哪个方向解决;-) 我目前正在开发一个 Web 应用程序,用于使用 Hibernate 存储员工。 插入、删除、搜索;一切正常。 但! 每个员工都有一个由字符串列表表
这是我第一次使用JPA。我用 Java 和 JPA 编写代码。我的代码如下。 String queryStr = "SELECT m.title, b.isbn, b.authors"; q
我正在尝试从当前用户获取特定租金的列表。 Controller 中的代码: def index() { if (isLoggedIn()) { String username = getPri
我是一名优秀的程序员,十分优秀!