我用下面这个类来抓取信息, 但一旦有异常的时候程序就停止的
我想添加委托或事件的来处理异常 将异常记录在数据库中另外还有没有其他方案
public static class WebRequestHelper
{
public static string GetHtmlFromUrl(string url, Encoding encoding)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
Stream dataStream = null;
string strHtml = null;
try
{
// Create a request for the URL.
request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 1000 * 10; //毫秒 * 秒
request.AllowAutoRedirect = false;
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials; // Get the response.
response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK)
{
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
reader = new StreamReader(dataStream, encoding);
// Read the content.
strHtml = reader.ReadToEnd();
}
}
catch (WebException we) {
if (we.Status==WebExceptionStatus.Timeout)
{
return null;
}
throw we;//不要throw 记录在数据库中,怎么记录 通过委托事件在外面实现 怎么修改好呢 谢谢
}
catch (Exception e)
{
throw e;
}
finally
{
if (reader != null)
{
reader.Close();
}
if (dataStream != null)
{
dataStream.Close();
}
if (response != null)
{
response.Close();
} request = null;
} return strHtml;
}
}
我想添加委托或事件的来处理异常 将异常记录在数据库中另外还有没有其他方案
public static class WebRequestHelper
{
public static string GetHtmlFromUrl(string url, Encoding encoding)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
Stream dataStream = null;
string strHtml = null;
try
{
// Create a request for the URL.
request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 1000 * 10; //毫秒 * 秒
request.AllowAutoRedirect = false;
// If required by the server, set the credentials.
request.Credentials = CredentialCache.DefaultCredentials; // Get the response.
response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode == HttpStatusCode.OK)
{
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
reader = new StreamReader(dataStream, encoding);
// Read the content.
strHtml = reader.ReadToEnd();
}
}
catch (WebException we) {
if (we.Status==WebExceptionStatus.Timeout)
{
return null;
}
throw we;//不要throw 记录在数据库中,怎么记录 通过委托事件在外面实现 怎么修改好呢 谢谢
}
catch (Exception e)
{
throw e;
}
finally
{
if (reader != null)
{
reader.Close();
}
if (dataStream != null)
{
dataStream.Close();
}
if (response != null)
{
response.Close();
} request = null;
} return strHtml;
}
}
{
public static Action<Exception> LogExceptionInfoToDB; public static string GetHtmlFromUrl(string url, Encoding encoding)
{
try
{
return rGetHtmlFromUrl(string url, Encoding encoding);
}
catch(Exception e)
{
if(LogExceptionInfoToDB!=null)
LogExceptionInfoToDB(e); //将异常记录在数据库中
throw e;
}
} private static string rGetHtmlFromUrl(string url, Encoding encoding)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
StreamReader reader = null;
Stream dataStream = null;
string strHtml = null;
.............