WebException getResponse() 未捕获
WebException getResponse() not catching
这可能是个愚蠢的问题,我只是漏掉了一些明显的东西。我四处查看处理网络错误和类似的问题,但我似乎无法找到为什么会发生这种情况的答案。
基本上,我调用的服务器发送 json 并返回,但在请求时有间歇性问题 - 即 502 BadGateway - 没有其他。当我说间歇性时,我强调的是,因为它可以在 5 小时内完美地处理 200 个请求而不会失败,然后抛出 502,但它也可能在第一个请求时发生。很难预测。另外,应该注意的是,我无权访问服务器、它的配置或类似的东西。完全远程。
在开发环境中,我可以继续处理异常,程序继续 运行 并且 - 使用相同请求的同一服务器 - 在下一个请求中,如果我没有收到它成功处理的 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
的捕获添加到处理程序中:
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
}
这可能是个愚蠢的问题,我只是漏掉了一些明显的东西。我四处查看处理网络错误和类似的问题,但我似乎无法找到为什么会发生这种情况的答案。
基本上,我调用的服务器发送 json 并返回,但在请求时有间歇性问题 - 即 502 BadGateway - 没有其他。当我说间歇性时,我强调的是,因为它可以在 5 小时内完美地处理 200 个请求而不会失败,然后抛出 502,但它也可能在第一个请求时发生。很难预测。另外,应该注意的是,我无权访问服务器、它的配置或类似的东西。完全远程。
在开发环境中,我可以继续处理异常,程序继续 运行 并且 - 使用相同请求的同一服务器 - 在下一个请求中,如果我没有收到它成功处理的 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
的捕获添加到处理程序中:
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
}