abort(403); <-- works fine, will display laravel abort page
try{
$rows = DB::.......
if ( !$Rows ) {
abort(403);<-- this will become exception
} else {
}
} catch (Exception $e) {
}
当用户请求时,我有一个页面,如果没有行,我想使用laravel abort();来终止页面。
然而,我使用了try catch包装我代码,它将变成catch an error并导致laravel abort()无法工作。
有人要怎么解决这个问题吗?
发布于 2019-02-04 00:46:19
试试这段代码
try{
abort(403);
} catch (\Exception $e) {
if($e->getStatusCode()==403)
abort(403);
}
发布于 2019-02-05 09:51:22
\Exception
是所有php异常的基类。因此,当您在try中捕获\Exception
时..块,您实际上就是在捕获所有异常。
当您执行abort( 403 )时,statusCode会在内部抛出带有Larave403的HttpException
。
如果你在laravel中看到,HttpException
扩展了php的\RuntimeException
,实际上在最后扩展了\Exception
类。
解决方案是捕获特定的异常,而不是捕获\Exception
。例如,如果你担心mysql连接,你可以捕获PDOException
。更好的做法是详细说明您正在捕获的异常。
<?php
try{
$rows = DB::someaction()...;
if (!$rows) {
abort(403);
}
// Do stuff with $rows
}catch (PDOException $e) {
// take action for specific exception
}
https://stackoverflow.com/questions/54503854
复制相似问题