首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel abort()在try和catch中不起作用

Laravel abort()在try和catch中不起作用
EN

Stack Overflow用户
提问于 2019-02-03 22:30:18
回答 2查看 758关注 0票数 0
代码语言:javascript
运行
复制
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()无法工作。

有人要怎么解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2019-02-04 00:46:19

试试这段代码

代码语言:javascript
运行
复制
      try{
        abort(403);
    } catch (\Exception $e) {

        if($e->getStatusCode()==403)
            abort(403);
    }
票数 1
EN

Stack Overflow用户

发布于 2019-02-05 09:51:22

\Exception是所有php异常的基类。因此,当您在try中捕获\Exception时..块,您实际上就是在捕获所有异常。

当您执行abort( 403 )时,statusCode会在内部抛出带有Larave403的HttpException

如果你在laravel中看到,HttpException扩展了php的\RuntimeException,实际上在最后扩展了\Exception类。

解决方案是捕获特定的异常,而不是捕获\Exception。例如,如果你担心mysql连接,你可以捕获PDOException。更好的做法是详细说明您正在捕获的异常。

代码语言:javascript
运行
复制
<?php 

try{
    $rows = DB::someaction()...;

    if (!$rows) {
        abort(403);
    }
    // Do stuff with $rows

}catch (PDOException $e) {
    // take action for specific exception
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54503854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档