mercredi 24 mai 2017

Larval 5.1: Try catch block not catching custom exception with SOAP API source

We have created an API that connects to the SOAP api system of the customer. We have a custom exception CustomerNotFound :

<?php

namespace App\Exceptions;


class CustomerNotFoundException extends  \Exception
{
    protected $code = 'customer_not_found';
    protected $message = 'Customer not found!';
}

A Soap Class function for retrieving user information

public function getCustomerById($customerID)
    {

        $parameters = $this->appendToParameters([
            'customerID' => $customerID])
            ->getParameters();

        $result = $this->client->GetCustomerByID($parameters);

        if ($result->SDKResult->ResultCode === 'Success') {
            $data = $result->GetCustomerByIDResult;

            return $data;
        }

        throw new CustomerNotFoundException();

    }

And a controller that calls the soap class function:

public function getCustomerDetails(Request $request, $customerId)
    {
        try {
            $customerDetails = $this->customerService->getCustomerById($customerId);

            return $this->respond($customerDetails);

        } catch (\SoapFault $e) {
            $this->respondInternalError($e->getMessage());
        } catch (\App\Exceptions\CustomerNotFoundException $c) {
             $this->respondNotFound($c->getMessage());
        }
}

I know the exception is working because the soap function is also called on another controller. Also when I remove the try catch block and call the controller function, the api returns the CustomerNotFound exception. However when it is inside a try catch block it just returns a STATUS 200 and an empty response (no json etc etc). No errors shown. Any idea?



from Newest questions tagged laravel-5 - Stack Overflow http://ift.tt/2qilfPH
via IFTTT

Aucun commentaire:

Enregistrer un commentaire