使用Laravel中的try和catch处理错误

sua*_*ger 28 php error-handling try-catch laravel

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

应用程序\ SERVICES\PayUService

try {
  $this->buildXMLHeader; // Should be $this->buildXMLHeader();
} catch (Exception $e) {
        return $e;
}
Run Code Online (Sandbox Code Playgroud)

应用程序\控制器\ ProductController的

function secTransaction(){
  if ($e) {
    return view('products.error', compact('e'));
  }
}
Run Code Online (Sandbox Code Playgroud)

这就是我得到的.

在此输入图像描述

我不知道为什么Laravel没有将我重定向到视图.错误是强制的吗?

The*_*pha 91

你在一个内部,namespace所以你应该\Exception用来指定全局命名空间:

try {

  $this->buildXMLHeader();

} catch (\Exception $e) {

    return $e->getMessage();
}
Run Code Online (Sandbox Code Playgroud)

在你的代码已经使用了catch (Exception $e)这么Exception被搜查/为:

App\Services\PayUService\Exception
Run Code Online (Sandbox Code Playgroud)

因为里面没有Exception类,App\Services\PayUService所以它没有被触发.或者,您可以use在类的顶部使用语句,use Exception;然后您可以使用catch (Exception $e).

  • Alpha,问题是命名空间。谢谢担心。 (2认同)