我有一个在DownloadData上调用WebClient的方法。由于URL返回404,此方法引发异常。这都是规范所期望的,因为资源不存在。
Web将抛出一个WebException,因为它包含包含有详细错误的JSON对象,所以我必须从响应中读取body。在那之后,我不得不再次抛出一个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(string,System.Net.WebExceptionStatus,System.Net.WebExceptionInternalStatus,System.Exception)”的最佳重载方法匹配有一些无效的参数
就像这个构造函数不存在一样!检查异常中的构造函数,在catch块中检查构造函数。
如您所见,我正在使用有效的构造函数。检查这里。
这里发生了什么事?
发布于 2017-02-15 08:50:48
问题是,您需要将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);
}https://stackoverflow.com/questions/42244300
复制相似问题