Error handling with try and catch in Laravel

2019-04-03 06:32发布

问题:

I want to implement a good error handling in my app, I have forced this file for catching the error.

App\Services\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'));
  }
}

And this is what I get.

I don't know why Laravel is not redirecting me to the view. Is the error forced right?

回答1:

You are inside a namespace so you should use \Exception to specify the global namespace:

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

In your code you've used catch (Exception $e) so Exceeption is being searched in/as:

App\Services\PayUService\Exception

Since there is no Exception class inside App\Services\PayUService so it's not being triggered. Alternatively, you can use a use statement at the top of your class like use Exception; and then you can use catch (Exception $e).