web-dev-qa-db-fra.com

Traitement des erreurs avec try and catch in Laravel

Je veux implémenter une bonne gestion des erreurs dans mon application, j'ai forcé ce fichier pour attraper l'erreur.

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

Et c'est ce que je reçois.

enter image description here

Je ne sais pas pourquoi Laravel ne me redirige pas vers la vue. L'erreur est-elle forcée, n'est-ce pas?

25
suarsenegger

Vous êtes à l'intérieur d'un namespace, vous devez donc utiliser \Exception Pour spécifier l'espace de nom global:

try {

  $this->buildXMLHeader();

} catch (\Exception $e) {

    return $e->getMessage();
}

Dans votre code, vous avez utilisé catch (Exception $e) donc Exception est recherché dans/en tant que:

App\Services\PayUService\Exception

Comme il n'y a pas de classe Exception à l'intérieur de App\Services\PayUService, Elle n'est donc pas déclenchée. Vous pouvez également utiliser une instruction use en haut de votre classe, telle que use Exception;, Puis vous pouvez utiliser catch (Exception $e).

87
The Alpha