异常处理 请教一个问题?

        try {
            //这里是代码
        } catch (\Exception $exception) {
            echo $exception->getMessage(); die();
        }
        //这后面还有很多代码

我想显示异常信息 并且停止后面的程序继续执行 用 die (); 结束是对的吗?


如果 catch 里面继续抛出异常 程序会停止 但是是报一个错误
是不是这样写不对

        try {
            //这里是代码
        } catch (\Exception $exception) {
           throw new InvalidException($exception->getMessage());
        }
        //这后面还有很多代码
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 5

既然使用 try catch 了,肯定需要自己处理异常,那你后面的代码没有意义了

2年前 评论

具体问题具体分析,不能一概而论

  1. 你两个方式里第一种除非有明确必要,否则不要用
  2. 第二种比较常用
  3. 除此之外有些场景会根据异常信息直接 return 特定数据
2年前 评论

类似这样吧,往往自己去主动捕获了,就是希望做一些动作

try {
    //这里是代码
} catch (QueryException $e) {
    // 查询异常,返回空数据
    return [];
} catch (HttpException $e) {
    // 请求异常,尝试一次重新请求
    return $res = '重新请求';
} catch (ApiException $e) {
    // 外部API无法获取数据,改为从本地获取
    return $res = '本地获取';
} catch (\Exception $e) {
    // 意料之外的错误,无法处理,对外抛出
    Log::error($e->getMessage());
    throw $e;
}
//这后面还有很多代码
2年前 评论

echo..die () 完全没问题,这两种写法也都没问题,catch 里写代码也没啥特殊的啊,单独拿出来 echo..die 有问题吗,throw 有问题吗,没有。想让程序停止方式 die return throw 都行,怎么显示异常信息和 catch 没关系了。在 catch 中可以不写任何东西,而让程序继续执行,或者干什么事情,或者继续抛出异常。其实就是不让程序抛出异常而停止运行的默认行为,自己处理异常实现逻辑上的自定义。

2年前 评论

推荐参考框架的:异常处理

使用 Reportable & Renderable 来上报异常和处理异常返回。

2年前 评论