Joe*_*nks 7 php exception laravel eloquent laravel-5
我有一些代码可以进行db调用和网络请求,我把它包装在try/catch中.问题是我永远无法捕获异常,它们似乎不是致命的例外:
try {
// make db requests and network calls
} catch (Exception $e) {
// handle exception
}
Run Code Online (Sandbox Code Playgroud)
也就是说,我遇到了以下例外情况:
[Illuminate\Database\QueryException]
[PDOException]
[InvalidArgumentException]
Run Code Online (Sandbox Code Playgroud)
有没有办法捕捉这些例外?我是否需要明确每种可能的异常对象类型(意味着我必须创建许多try/catches),或者是否有推荐的方法来捕获非致命异常?
jed*_*ylo 18
通过在控制器顶部包含Exception类,确保正确使用命名空间,如下所示:
Use Exception;
Run Code Online (Sandbox Code Playgroud)
如果使用类而不提供其名称空间,PHP将在当前名称空间中查找该类.异常类存在于全局命名空间中,因此如果你这样做尝试/捕获一些命名空间代码,例如你的控制器或模型,你需要做:
try {
//code causing exception to be thrown
} catch(Exception $e) {
//exception handling
}
Run Code Online (Sandbox Code Playgroud)
如果你这样做,就没有办法错过任何例外.
否则,如果在存储在App\Http\Controllers中的控制器代码中出现异常,则catch将等待抛出App\Http\Controllers\Exception对象.
| 归档时间: |
|
| 查看次数: |
8920 次 |
| 最近记录: |