【问题标题】:Try/catch doesnt work in my function LaravelTry/catch 在我的函数 Laravel 中不起作用
【发布时间】:2018-02-19 01:50:50
【问题描述】:

我正在尝试处理错误,因为如果 $apimodel 变量为空或其他错误,我想重定向用户。就像 api 的身份验证错误等等。这是我的代码:

$integration = Integration::where('name', 'lightspeed')->first();

    $apimodel = Apimodel::where('user_id', Auth::user()->id)
        ->where('integration_id', $integration->id)
        ->where('active', true)
        ->first();

    try {
        $api = new WebshopappApiClient(
            $apimodel->data01,
            $apimodel->api_key,
            $apimodel->api_secret,
            $apimodel->data02);
    } catch (ErrorException $e) {
        die($e->getMessage());
    }

    return view('integrations.lightspeed.index', compact('api'));

【问题讨论】:

  • 你忘了问问题。您也没有解释“不起作用”的确切含义。
  • 那么,WebshopappApiClient 类在失败时会抛出异常吗?
  • @Qirel 是的,它会在失败时抛出异常
  • 显然没有。展示它的实现。另外,ErrorException 的完全限定名称是什么
  • @zerkms 使用 Whoops\Exception\ErrorException;

标签: php laravel api


【解决方案1】:

您似乎没有为要捕获的异常使用正确的命名空间。正如所有你想要的die() 我建议你干脆抓住\Exception 而不是

 } catch (\Exception $e) {
   ...

【讨论】:

    【解决方案2】:

    您不应该(也不能)捕获 Whoops 异常,因为它们会在请求生命周期中稍后在出现原始异常时自动抛出。

    \Whoops\Exception\ErrorException 扩展了 PHP 的 \ErrorException,这是 WebshopappApiClient 抛出的,你应该抓住的。甚至可能是最广泛的\Exception,具体取决于您的用例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      相关资源
      最近更新 更多