J'ai un problème avec ma variable httpRes. Fondamentalement, ce sont les bases d'une application en ligne de commande qui va vérifier un ensemble d'URL donnés et renvoyer leur code d'état, c'est-à-dire non autorisé, rediriger, ok, etc Le problème est l'une des applications dans ma liste continue de jeter une erreur. J'ai donc utilisé une clause try catch pour saisir l'erreur et me dire ce qui l'a causé.Variable hors portée utilisant HttpWebRequest et WebResponse
Malheureusement, la variable httpRes fonctionne dans la clause try, mais pas dans la capture. Il continue d'être retourné comme nul. J'ai appelé httpRes en dehors de l'instruction try/catch donc j'espère que ma portée est correcte mais pour une raison quelconque, la valeur ne change jamais de null pour l'instruction catch, seulement l'instruction try.
Voici le code référencé.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace URLMonitor
{
class Program
{
static void Main(string[] args)
{
string url1 = "https://google.com"; //removed internal URL for security reasons.
HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(url1);
httpReq.AllowAutoRedirect = false;
HttpWebResponse httpRes = null;
try
{
httpRes = (HttpWebResponse)httpReq.GetResponse();
if (httpRes.StatusCode == HttpStatusCode.OK)
{
Console.WriteLine("Website is OK");
// Close the response.
//httpRes.Close();
}
}
catch
{
if (httpRes != null)
{
if (httpRes.StatusCode == HttpStatusCode.Unauthorized)
{
Console.WriteLine("Things are not OK");
//httpRes.Close();
}
}
else
{
Console.WriteLine("Please check the URL and try again..");
//httpRes.Close();
}
}
Console.ReadLine();
}
}
}
C'était le correctif. Donc, apparemment, je n'attrapais pas cette erreur spécifique. J'ai supposé qu'une capture générique tout attraperait n'importe quelle exception au lieu de devoir spécifier quelle exception j'essaye d'attraper. –
@ stack-flo: Oui, il * va * attraper une exception (il a attrapé celui qui a été lancé) - mais vous l'avez attrapé sans spécifier une variable, ce qui signifie que vous ne pouvez pas utiliser les informations de l'exception ... et sans spécifier le type d'exception à utiliser, vous ne pouvez pas utiliser la propriété spécifique au type d'exception. –
J'ai compris. Merci pour l'explication approfondie! –