PHP de type soapfault pas être pris par les gestionnaires d'exception
Je suis nouveau en PHP de gestion des exceptions et du SAVON. Pour une raison que je ne peut pas attraper un type soapfault. Je ne sais pas pourquoi. Le serveur soap n'est pas le mien.
try {
$contact_id = $objSoapClient->getContactIdFromVisitorId('12345');
}
catch (SoapFault $sf) {
echo "Soapfault";
}
catch (Exception $e) {
echo "Exception";
}
Je suis volontairement en passant la mauvaise id 12345. Lorsque j'active les erreurs que je vois le message suivant SoapFault exception: [SOAP-ENV:Client] Invalid Visitor ID
. Cependant, mes prises de type soapfault bloc, ni mon Exception de catch block jamais se faire frapper. Pourquoi?
est-ce que votre fonction getContactIdFromVisitorId jeter exception ?
Je suppose donc depuis quand je activer les erreurs je vois l'exception de type soapfault message d'erreur j'ai inclus à la fin de ma question
J'ajouterai que le service web semble être de retour d'un réel de type soapfault objet à la variable
Je suppose donc depuis quand je activer les erreurs je vois l'exception de type soapfault message d'erreur j'ai inclus à la fin de ma question
[SOAP-ENV:Client] Invalid Visitor ID
J'ajouterai que le service web semble être de retour d'un réel de type soapfault objet à la variable
$contact_id
OriginalL'auteur mrtsherman | 2011-06-16
Vous devez vous connecter pour publier un commentaire.
Le code que vous avez saisi est correct. Voici la seule chose qui me vient à l'esprit.
Avec cela dit, si le code est situé à l'intérieur d'une classe qui permet de définir un espace de noms, vous code ne fonctionnera pas comme il essaie de faire référence à une Exception, comme le \namespace\Exception qui n'existe pas. "Passive" des références telles que celles de
catch
clauses ouinstanceof
expressions sont autorisés parce que le manque de classe a pu être chargé à plus tard.Pour que cela fonctionne, vous devez préfixer le nom de la classe avec une barre oblique (c'est à dire \Exception) pour dire à PHP de PHP à partir de l'espace mondial (ou de la racine si vous voulez appeler ça comme ça) (PHP), par opposition à votre espace de noms;
Vous pouvez trouver beaucoup d'informations sur les espaces de noms ici: http://php.net/manual/en/language.namespaces.php.
Drat! Déjoué à nouveau par les espaces de noms! J'ai une nouvelle appréciation pour Java et le typage statique!
OriginalL'auteur Francois Deschenes
Le problème s'est avéré être mon SoapClient déclaration. Il est une des exceptions paramètre qui doit être définie pour que les exceptions à déclencher.
OriginalL'auteur mrtsherman