Je jette quelques exceptions de savon dans mon service Web avec succès. Je voudrais attraper les exceptions et accéder à la chaîne et à la clientèle client appelée à l'exception. Voici un exemple de l'une de mes exceptions dans le service Web: dans mon client, j'essaie d'exécuter la méthode du service Web pouvant lancer une exception et que je l'attrape. Le problème est que mes blocs de capture ne font rien. Voir cet exemple: P> try
{
service.StartGame();
}
catch
{
// missing code goes here
}
3 Réponses :
catch (SoapException soapEx) { //Do something with soapEx }
attrapez la SOAPEXException code> instance. De cette façon, vous pouvez accéder à ses informations:
try {
service.StartGame();
} catch (SoapException e) {
// The variable 'e' can access the exception's information.
}
Juste pour être sûr que LO ne brisera pas son code avec ce changement, il peut ajouter un bloc supplémentaire capture (exception e) code>. Parfois, il est possible que l'exception ne soit pas
SOAPException CODE> ... E.G.:
OutofMemoryException CODE> ou problème de connectivité, ou Thread Abort, etc.
Cela fonctionne bien. Cependant, j'ai une question. Comment puis-je savoir ce que la chaîne est vraiment appelée afin que je puisse y accéder? Par exemple: E.GetString () ou quelque chose. Pour cet exemple particulier, je veux accéder à la chaîne "Vous perdez le jeu."
Je peux appeler E.Message qui renvoie un message d'erreur très long, mais je veux seulement le message de chaîne.
Louise, je ne connais pas votre situation, mais je suppose que vous pouvez créer des classes héritées de soapexception code> avec toutes les informations supplémentaires dont vous avez besoin. Ajoutez ensuite des blocs de capture pour ces classes avant B> Catching comme décrit ici.
Louise: E.Message Code> Retours Exactement B> La même chaîne que celle transmise au constructeur, j'ai testé. Peut-être avez-vous utilisé une autre classe d'exception, qui a ajouté des informations supplémentaires à votre message?
Ou vous avez manipulé une autre exception, qui n'a pas été lancée par vous. Une telle exception peut se produire au côté du service, et il serait enveloppé b> à SOAPException code> par CLR.
Notez également que SOAPException.ClientfaultCode CODE> Selon MSDN "Spécifie un code d'erreur SOAP qui représente un appel client qui n'est pas formaté correctement ou ne contient pas les informations appropriées." C'est exactement ce que tu veux? Peut-être que vous devez utiliser un autre code ou un autre constructeur. Juste un avertissement.
Vous voudrez peut-être attraper les exceptions spécifiques.
Cela ne répond pas à la question de Louise
Je me débats avec cela, créant une simple classe de réponse avec le message d'erreur est la meilleure option. Voir cette question et réponse: Stackoverflow.com/q/32058/945875