Je travaille sur du code pour utiliser HttpWebRequest de manière asynchrone. Si l'un d'entre vous l'a déjà fait, sachez que la gestion des erreurs peut être un peu pénible car si une exception est renvoyée dans l'une des méthodes de rappel, elle ne peut pas être renvoyée au code appelant via un essai./catch block. Ce que je veux faire est de gérer les erreurs en sauvegardant les exceptions dans mon objet d'état qui est passé à chaque méthode de rappel. Si une exception est détectée, l'objet d'état sera mis à jour et l'appel http sera annulé. Le problème que j'ai est que dans mon objet d'état, je dois utiliser une propriété Exception afin que n'importe quel type d'exception puisse être stocké. Lorsque le code appelant vérifie l'objet d'état et "voit" une exception, il ne sait pas de quel type d'exception il s'agit.Quelle est la meilleure façon de gérer les exceptions HttpWebRequest asynchrones en C#?
Existe-t-il un moyen d'autoriser mon objet d'état à contenir n'importe quel type d'exception tout en conservant une forte typage?
État objet
public class HttpPostClientAsyncModel
{
public HttpResponseSnapshot Response { get; set; }
public HttpPostClientAsyncStatus Status { get; set; }
public Exception Exception { get; set; }
public WebRequest Request { get; set; }
}
Le code d'appel pourrait simplement jeter model.Exception l'intérieur d'un bloc try puis configuration attrapés pour les sous-types Exception spécifiques que l'appelant peut gérer de manière appropriée. Ou peut-être pas ... :) – dlev
Est-ce seulement pour l'expérience d'apprentissage? Quel est le problème avec 'HttpWebRequest.BeginGetResponse'? –