在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;
}
您在调用SetInterval
(它本身可能从未抛出WebException
)时捕获异常,但在该间隔的上下文中执行的匿名函数中没有捕获异常。将您的异常处理转移到该功能中:
SetInterval(() =>
{
try
{
string r = HttpGet("http://www.example.com/some.php?Username= Z&Status=On");
}
catch (WebException) { MessageBox.Show("No Network!"); }
}, 10000);