php - 如何正确捕获 PHP 异常 (Laravel 5.1)

标签 php laravel exception laravel-5 eloquent

我有一些进行数据库调用和网络请求的代码,我将其封装在 try/catch 中。问题是我永远无法捕获异常,而且它们似乎不是致命异常:

try {
   // make db requests and network calls
} catch (Exception $e) {
   // handle exception
}

也就是说,我遇到了这样的异常:

[Illuminate\Database\QueryException] 
[PDOException]
[InvalidArgumentException] 

有没有办法捕获这些异常?我是否需要明确指出每种可能的异常对象类型(意味着我必须创建许多 try/catch),或者是否有推荐的捕获非致命异常的方法?

最佳答案

通过在 Controller 顶部包含 Exception 类,确保您正确使用命名空间,如下所示:

 Use Exception; 

如果您使用一个类而没有提供它的命名空间,PHP 会在当前命名空间中查找该类。 Exception 类存在于全局命名空间中,因此如果您在某些命名空间代码中执行该 try/catch,例如您的 Controller 或模型,您需要执行以下操作:

try {
  //code causing exception to be thrown
} catch(Exception $e) {
  //exception handling
}

如果你这样做,就不会错过任何异常。

否则,如果您在存储在 App\Http\Controllers 中的 Controller 代码中遇到异常,您的捕获将等待 App\Http\Controllers\Exception 对象被抛出。

关于php - 如何正确捕获 PHP 异常 (Laravel 5.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31508223/

相关文章:

php - 从 PHP 中执行我的程序?

c# - 带等待的 ThreadAbortException

php - 如何将大量字符串与另一个字符串的开头进行比较?

Laravel Eloquent 查询,带有可选参数

php - 如何在 Laravel 中实现你自己的 Faker provider

laravel - 安装 whoami 问题后部署 AWS 代码

java - 为什么在线程 "main"java.util.NoSuchElementException 中出现异常?

java - java3D lib 配置的问题

php - SendGrid Cc 和 Bcc 不适用于 PHP

php - 可以采取哪些步骤来确保 PHP 应用程序的安全性?