我有一个方法,我在WebClient上调用DownloadData。此方法抛出异常,因为URL返回404.由于资源不存在,这是规范所期望的全部。
Web客户端将抛出WebException,我必须从respose读取body,因为它包含带有详细错误的JSON对象。之后我必须再次抛出WebException,因为图层组仍然需要WebException。目前我正在尝试使用当前的详细信息构建WebException,如下所示:
catch(WebException ex)
{
var response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
dynamic error = JsonConvert.DeserializeObject(response);
throw new WebException(error.message, null, ex.Status, ex.Response);
}
问题是我在构造WebException时遇到异常。这是消息!
最佳重载方法匹配 “System.Net.WebException.WebException(字符串, System.Net.WebExceptionStatus,System.Net.WebExceptionInternalStatus, System.Exception)'有一些无效的参数
就像这个构造函数不存在!检查异常中的构造函数并检查catch块中的构造函数。
正如您所看到的,我正在使用有效的构造函数。检查here。
这里发生了什么?
答案 0 :(得分:1)
问题是,您需要将error.message
转换为字符串。如果您以不同方式处理该字符串会更好,这样您就可以验证error.message
是否存在。
catch(WebException ex)
{
var response = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
dynamic error = JsonConvert.DeserializeObject(response);
throw new WebException((string)error.message, null, ex.Status, ex.Response);
}