WebException getResponse() not catching
本文关键字:not catching getResponse WebException | 更新日期: 2023-09-27 18:30:09
这可能是一个愚蠢的问题,我只是遗漏了一些显而易见的东西。我四处查看了处理网络错误的方法,但似乎找不到为什么会发生这种情况的答案。
基本上,我从中调用的服务器发送json并返回,但在请求上有间歇性问题——即502 BadGateway——没有其他问题。当我说间歇性时,我强调这一点,因为它可以在5个小时内完美地处理200个请求,然后抛出502,但也可能发生在第一个请求上。很难预测。此外,需要注意的是,我无法访问服务器,它是configs或类似的东西。完全远程。
在dev环境中,如果我没有成功接收到它处理的502,我可以继续处理异常,程序继续运行,并在下一个请求中使用相同的请求访问同一服务器。然而,独立于开发平台之外,我会遇到一个没有异常数据的硬崩溃。
我试着移动try/catch,将问题调用与代码的其余部分分离,将其组合等等,我总是收到同样的问题。
现在已经很晚了,我可能只是没有正确处理,所以任何指导都很感激。我今晚拒绝放弃这件事——一个星期以来我一直是我的眼中钉。如果我只是一个磨砂膏,会看到新鲜的眼睛,嘲笑我,叫我出来。
提前感谢
ps。在getResponse()上发出异常
try
{
using (HttpWebResponse inboundResponse = (HttpWebResponse)outboundRequest.GetResponse()) //exception here for 502
using (StreamReader stream = new StreamReader(inboundResponse.GetResponseStream()))
using (JsonTextReader reader = new JsonTextReader(stream))
{
List<T> outputData = new List<T>();
while (reader.Read())
{
JsonSerializer serializer = new JsonSerializer();
var tempData = serializer.Deserialize<T>(reader);
outputData.Add(tempData);
}
inboundResponse.Close();
return outputData;
}
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.ProtocolError)
{
UIController.addSystemMessageToChat("Protocol Error");
switch(((HttpWebResponse)e.Response).StatusCode)
{
case HttpStatusCode.BadGateway:
UIController.addSystemMessageToChat("Resending Response");
//process exception
default:
throw;
}
}
}
它可能不是WebException
尝试在处理程序中添加Exception
的catch:
try
{
using (HttpWebResponse inboundResponse = (HttpWebResponse)outboundRequest.GetResponse()) //exception here for 502
using (StreamReader stream = new StreamReader(inboundResponse.GetResponseStream()))
using (JsonTextReader reader = new JsonTextReader(stream))
{
List<T> outputData = new List<T>();
while (reader.Read())
{
JsonSerializer serializer = new JsonSerializer();
var tempData = serializer.Deserialize<T>(reader);
outputData.Add(tempData);
}
inboundResponse.Close();
return outputData;
}
}
catch (WebException e)
{
if (e.Status == WebExceptionStatus.ProtocolError)
{
UIController.addSystemMessageToChat("Protocol Error");
switch(((HttpWebResponse)e.Response).StatusCode)
{
case HttpStatusCode.BadGateway:
UIController.addSystemMessageToChat("Resending Response");
//process exception
default:
throw;
}
}
}
catch (Exception e)
{
// catch and handle an unknown / unexpected exception type
}