2010-07-15 5 views
0

Je lis les données d'un site Web comme suit:Évitez exception dans WebRequestObject

webRequestObj = (HttpWebRequest)WebRequest.Create("http://localhost/503errorPage.php"); 
theResponse = webRequestObj.GetResponse(); 
theResponseStream = theResponse.GetResponseStream(); 
theStreamReader = new StreamReader(theResponseStream); 
theWholePage = theStreamReader.ReadToEnd(); 

Si je reçois à une page qui a une erreur 503, la ligne:

theResponse = webRequestObj.GetResponse(); 

jette un WebException:

The remote server returned an error: (503) Server Unavailable. 

y at-il un contrôle de façon si le site renvoie une erreur 503 au lieu de tout envelopper dans un bloc try/catch et Waiti ng pour l'exception? Je fais beaucoup de mises à jour par seconde et j'aimerais éviter le try/catch si possible.

Répondre

0

Le coût du try/catch sera minuscule par rapport au temps nécessaire pour établir la connexion réseau. Vraiment, si la performance est ce qui vous inquiète - cesser de vous inquiéter :)

Maintenant, je vais admettre que c'est ennuyeux à un niveau plus philosophique que vous ne pouvez pas faire un appel spéculatif - une sorte de TryGetResponse - mais Je ne connais pas de moyen de le faire. Il est possible que l'une des approches asynchrones fonctionne, mais cela finit par changer potentiellement beaucoup de code. Si vous ne disposez pas de la réponse, assurez-vous que vous disposez de la réponse et du flux. Le nombre de connexions que vous pouvez effectuer sur le même serveur est donc limité.

Questions connexes