未抛出异常

本文关键字:抛出异常 | 更新日期: 2023-09-27 18:08:48

 try
{
    WebRequest request = WebRequest.Create("http://facebook.com");
    HttpWebResponse response = (HttpWebResponse) request.GetResponse();
    MessageBox.Show("I am here!");      // Not run                
}
catch (Exception ex)
{
    MessageBox.Show("Error Occurred!"); //Not run!
}

在我的国家,facebook是过滤的,当我运行这段代码时,不会抛出异常,程序也不会显示消息"我在这里!";发生了什么事?

我想使用这段代码在timer_tick每1分钟和更新ui标签与活着的状态。你有别的办法吗?

未抛出异常

我猜你的timer_tick()的间隔值小于web请求的默认超时值,然后下一个计时器轮在当前轮完成之前执行。因此,为您的请求使用超时,最好使用任务,不要在运行计时器时冻结ui。

Task task = Task.Factory.StartNew(() =>
{
    WebRequest request = WebRequest.Create("http://facebook.com");
    request.Timeout = 5000;
    HttpWebResponse response = (HttpWebResponse) request.GetResponse();
});
// Run this code after successfully completing the task...
task.ContinueWith(t =>
{
   websiteIsAvailable = true;
   //Some code...
}, TaskContinuationOptions.OnlyOnRanToCompletion);
// Run this code after task Failure...
task.ContinueWith(t =>
{
   websiteIsAvailable = false;
   //Some code...
}, TaskContinuationOptions.OnlyOnFaulted);