PHP - Es kann keine Ausnahme gefunden werden, die von Google API lib ausgelöst wurde

7

Ich möchte eine Ausnahme erfassen, die von der Google API-PHP-Bibliothek ausgelöst wird, aber für einige Grund dafür ist, dass ein ' Fataler Fehler: Uncaught-Ausnahme ' generiert wird, bevor mein catch-Block erreicht wird.

In meiner App habe ich so etwas:

%Vor%

Dies ist Google_Clients authenticate () :

%Vor%

% authenticate($code) ist Google_Auth_OAuth2 :: authenticate () , die irgendwann die Ausnahme auslöst:

%Vor%

Wenn ich einen try / catch-Block in die Google_Client-Authentifizierung einfüge, fängt er die Ausnahme ab, aber ohne sie stirbt das Programm ab, anstatt den Haupt-try / catch-Block von meiner App zu erreichen.

Soweit ich weiß, sollte das nicht passieren. Irgendwelche Ideen?

    
Schrute 08.03.2014, 01:06
quelle

2 Antworten

22

Das Problem war, dass der try / catch-Block in einer Namespaced-Datei war und PHP erfordert, dass Sie "\ Exception" verwenden. Weitere Informationen: PHP 5.3 namespace / exception gotcha

Beispiel (aus dem obigen Link übernommen):

%Vor%     
Schrute 08.03.2014, 19:19
quelle
2

Ich bin mir nicht sicher, wie die Struktur von Googles API ist, und ich bin kein wirklich flüssiger PHP-Programmierer, aber Sie fangen einen bestimmten Ausnahmetyp von Exception ab, mit dem Googles Google_Auth_Exception möglicherweise nicht erbt von.

Da Ihr try-catch-Block nach einer Ausnahme sucht, die ein Mitglied von Exception ist und die Google_Auth_Exception vielleicht kein Mitglied von Exception ist, wird Ihr try catch-Block dies nicht tun.

Versuchen Sie, die spezifische Ausnahme abzufangen. Das ist mir schon früher in vielen verschiedenen Sprachen passiert.

Bearbeiten

Der von Ihnen gepostete Link erbt seine Ausnahme von: Google / Auth / Ausnahme Google / Auth / Exception erbt die Ausnahme von: Google / Exception Google / Exception erweitert Exception , was in diesem Zusammenhang der Exception sein kann, auf den sich Ihre Klasse bezieht.

Es scheint, dass meine Rechtfertigung dafür, dass Ihr try-catch-Block keine Ausnahme abfängt, völlig falsch ist, aber die Weisheit könnte immer noch wahr sein. Versuchen Sie, die spezifische Ausnahme abzufangen, und verwenden Sie instanceof , um zu sehen, ob PHP Google_Auth_Exception als Mitglied von Exception erkennt.

    
alvonellos 08.03.2014 01:13
quelle