Erreur de la chasse avec webexception
Je suis à l'aide d'un simple webclient pour récupérer le XML à partir d'un service web, j'ai cette enfermé dans un simple essayer, bloc catch (capture WebException). Comme la suivante;
try
{
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
client.DownloadStringAsync(new Uri("http://ip/services"));
}
catch (WebException e)
{
Debug.WriteLine(e.Message);
}
Pas si je change l'adresse IP de celui qui n'est pas valide, je serais attendu à ce qu'elle lève une exception de sortie et le message dans la fenêtre de débogage. Mais il ne le fait pas, il semble que le bloc catch n'est même pas arriver à être exécutés. Rien ne s'affiche et le débogage de windows en dehors de celui-ci;
A first chance exception of type 'System.IO.FileNotFoundException' occurred in mscorlib.dll
A first chance exception of type 'System.Net.WebException' occurred in System.Windows.dll
A first chance exception of type 'System.Net.WebException' occurred in System.Windows.dll
Mon code ressemble à droite pour moi, donc je ne comprends pas pourquoi les exceptions ne sont pas pris?
avez-vous essayé d'attraper exception générale? comme
je reçois le même à l'aide d'Exception. Merci
catch(Exception ex)
je reçois le même à l'aide d'Exception. Merci
OriginalL'auteur Nathan | 2011-11-03
Vous devez vous connecter pour publier un commentaire.
À partir de votre description des messages d'erreur, je suppose que l'exception est de type FileNotFoundException".
Avez-vous essayé juste attraper l'exception et de vérifier le type? Peut-être que l'exception web est un intérieur d'exception.
Mise à JOUR : je viens de remarquer que ce que vous êtes réellement l'appel est une méthode asynchrone.
Comme un test de cohérence, je suggérerais de permutation pour les non asynchrone de la méthode et de la vérification de l'erreur produite par la.
WebClient.DownloadString Méthode (Uri)
Vous pouvez également profiter de regarder cette page qui marche à travers la capture async erreurs à l'aide du client web comme un exemple.
Async Exceptions
Réponse de mise à jour comme j'ai remarqué que vous appelez une méthode asynchrone
ahh merci! je na sais que vous avez eu à intercepter des exceptions différemment quand faire les choses asynchrone. Je n'ai pas utiliser la méthode que vous avez posté (via le lien), mais au lieu vérifié pour les erreurs dans le DownloadStringCompleted qui fonctionne très bien. Merci de me mettre sur la réponse!
OriginalL'auteur fluent
L'exception ne sera jamais porté de DownloadStringAsync. Il n'est tout simplement pas le jeter, mais la DownloadString (non Async) va le jeter. Je ne sais pas si c'est un bug, je pensais que les méthodes asynchrones ne jamais lancer des exceptions en dehors de ArgumentException, si la documentation les états autrement.
Vous avez à "attraper" l'erreur dans le DownloadStringCompletedEventHandler:
Vous pouvez presque toujours ignorer "première chance" exceptions près, ceux qui sont pris dans le cadre et traités en conséquence. Voir cette question pour certains plus d'infos à ce sujet.
OriginalL'auteur CodeCaster