在C#中处理WebException

本文关键字:WebException 处理 | 更新日期: 2023-09-27 18:21:20

我有这个代码:

public static string HttpGet(string URI)
    {
        System.Net.WebRequest req = System.Net.WebRequest.Create(URI);
        System.Net.WebResponse resp = req.GetResponse();
        System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
        return sr.ReadToEnd().Trim();
    }
        try
        {
            SetInterval(() =>
            {
                string r = HttpGet("http://www.example.com/some.php?Username= Z&Status=On");
            }, 10000);
        }
        catch (WebException) { MessageBox.Show("No Network!"); }

Setinterval()在重试中的作用是每10000毫秒运行一次代码。但如果我没有连接到互联网,它会给我一个WebException错误。但我似乎甚至无法处理它。捕捉到异常仍然会给我同样的错误。当错误发生时,有没有办法只说"什么都不做"?

p.S我是C#的新手。

编辑:这是setinterval的代码:

public static IDisposable SetInterval(Action method, int delayInMilliseconds)
    {
        System.Timers.Timer timer = new System.Timers.Timer(delayInMilliseconds);
        timer.Elapsed += (source, e) =>
        {
            method();
        };
        timer.Enabled = true;
        timer.Start();
        // Returns a stop handle which can be used for stopping
        // the timer, if required
        return timer as IDisposable;
    }

在C#中处理WebException

您在调用SetInterval(它本身可能从未抛出WebException)时捕获异常,但在该间隔的上下文中执行的匿名函数中没有捕获异常。将您的异常处理转移到该功能中:

SetInterval(() =>
{
    try
    {
        string r = HttpGet("http://www.example.com/some.php?Username= Z&Status=On");
    }
    catch (WebException) { MessageBox.Show("No Network!"); }
}, 10000);