我有一个在WebClient上调用DownloadData的方法。这个方法抛出一个异常,因为URL返回404。这都是规范所期望的,因为资源不存在。
Web客户端将抛出一个WebException,我必须从respose中读取正文,因为它包含带有详细错误的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.Web ExceptionInternalStatus,System.Exception)'具有一些无效参数
好像这个构造函数不存在!检查异常中的构造函数和catch块中的构造函数。
正如你所看到的,我正在使用一个有效的构造函数。请在此处查看。
这里发生了什么?
问题是,您需要将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);
}