Search code examples
phplaravelerror-handlingtry-catch

Error handling with try and catch in Laravel


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.

enter image description here

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


Solution

  • 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 Exception 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).