使用块时编译器错误
本文关键字:编译器 错误 | 更新日期: 2023-09-27 18:06:47
我试图捕捉任何错误,突然出现当一个URL是无效的,下面是原始代码:
public static void mymethod()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline);
Stopwatch timer = new Stopwatch();
timer.Start();
using (var response = request.GetResponse())
timer.Stop();
timeTaken = timer.Elapsed.ToString();
}
我试着像下面这样创建一个异常处理程序,但是没有运气:
public static void mymethod()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline);
Stopwatch timer = new Stopwatch();
timer.Start();
try
{
using (var response = request.GetResponse())
}
catch
{
Console.WriteLine("error here...")
}
timer.Stop();
timeTaken = timer.Elapsed.ToString();
}
你应该这样做。
public static void ShowResponseAndTimeTaken(string firstline)
{
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline);
System.Diagnostics.Stopwatch timer = new Stopwatch();
timer.Start();
using (var response = request.GetResponse())
{
Console.WriteLine("Response : {0}", response);
}
timer.Stop();
Console.WriteLine("Time taken : {0}", timer.Elapsed);
}
catch(Exception e)
{
Console.WriteLine("error : {0}", e.Message);
}
}
您对using
-block的使用不正确。正确的代码是这样的:
using (var response = request.GetResponse())
{
}
或者不加block:
var response = request.GetResponse();
response.Dispose()
我相信你不能拦截它,因为它是在"try"块之前抛出的:"firstline"变量可能包含一个格式不正确的uri
文本。HttpWebRequest request = (HttpWebRequest)WebRequest.Create(firstline);
您也可以使用regex来验证URL,而不是等待抛出异常- http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx。
在这里(http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse.aspx)你可以找到关于GetResponse的详细描述。检查可以抛出哪些异常并修改当前的异常处理。你不应该离开……顺其自然。
WebRequest.Create
只抛出,如果方案无效(冒号之前的位),有一个安全错误,或者如果你传递的URI是空的(尽管你没有在你的try
语句中包含该语句,所以这些错误将不被上述代码处理)。
HttpWebResponse.StatusCode
属性并以适合您的应用程序的方式处理HTTP错误。
我想你是在谈论语法错误,因为你的代码不编译?
尝试在这行添加缺失的分号:
Console.WriteLine("error here...")
using-block不包含block:
using (var response = request.GetResponse())
删除using:
var response = request.GetResponse())