【问题标题】:Error handling with try and catch in Laravel在 Laravel 中使用 try 和 catch 处理错误
【发布时间】:2023-03-03 01:54:01
【问题描述】:

我想在我的应用程序中实现良好的错误处理,我已强制此文件用于捕获错误。

应用\服务\PayUService

try {
  $this->buildXMLHeader; // Should be $this->buildXMLHeader();
} catch (Exception $e) {
        return $e;
}

App\Controller\ProductController

function secTransaction(){
  if ($e) {
    return view('products.error', compact('e'));
  }
}

这就是我得到的。

我不知道为什么 Laravel 没有将我重定向到视图。 错误是否强制正确?

【问题讨论】:

    标签: php laravel error-handling try-catch


    【解决方案1】:

    您位于namespace 中,因此您应该使用\Exception 来指定全局命名空间:

    try {
    
      $this->buildXMLHeader();
    
    } catch (\Exception $e) {
    
        return $e->getMessage();
    }
    

    在您的代码中,您使用了catch (Exception $e),因此Exception 正在被搜索/作为:

    App\Services\PayUService\Exception
    

    由于App\Services\PayUService 内部没有Exception 类,所以它不会被触发。或者,您可以在班级顶部使用use 语句,例如use Exception;,然后您可以使用catch (Exception $e)

    【讨论】:

    • 谢谢!我已经做到了。我在官方文档中看到它作为评论。
    • 你能否分享更多相关代码,也请告诉我secTransaction,这个方法涉及什么或如何?
    • Alpha,问题是命名空间。谢谢你的担心。
    • 当你使用\Exception,那么那个类在哪里被搜索?我的意思是全局类的路径是什么?
    • Global 命名空间中,从根目录开始。
    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    相关资源
    最近更新 更多