2015-10-30 5 views
9

Desidero implementare una buona gestione degli errori nella mia app, ho forzato questo file per rilevare l'errore.Gestione errori con try and catch in Laravel

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

E questo è ciò che ottengo.

enter image description here

io non so perché non mi laravel sta riorientando alla vista. L'errore è forzato vero?

risposta

31

sei all'interno di un namespace così si dovrebbe usare \Exception per specificare il namespace globale:

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

Nel codice che hai usato in modo catch (Exception $e)Exceeption viene cercata in/come:

App\Services\PayUService\Exception 

Poiché non esiste una classe Exception all'interno di App\Services\PayUService, quindi non viene attivata. In alternativa, è possibile utilizzare una dichiarazione use nella parte superiore della classe come use Exception; e quindi è possibile utilizzare catch (Exception $e).

+0

Grazie! L'ho già fatto. L'ho visto come un commento nella documentazione ufficiale. – suarsenegger

+0

Potete per favore condividere più codice relativo e per favore parlatemi di 'secTransaction', cosa o come questo metodo è implicito? –

+1

Alpha, il problema era lo spazio dei nomi. Grazie per la preoccupazione. – suarsenegger