无法构造 WebException
Cannot construct a WebException
我有一种方法可以在 WebClient 上调用 DownloadData。此方法自 URL returns 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 时遇到异常。这是消息!
The best overloaded method match for
'System.Net.WebException.WebException(string,
System.Net.WebExceptionStatus, System.Net.WebExceptionInternalStatus,
System.Exception)' has some invalid arguments
好像这个构造函数不存在!检查异常中的构造函数并检查catch块中的构造函数。
如您所见,我正在使用有效的构造函数。检查 here.
这里发生了什么?
问题是,您需要将 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);
}
我有一种方法可以在 WebClient 上调用 DownloadData。此方法自 URL returns 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 时遇到异常。这是消息!
The best overloaded method match for 'System.Net.WebException.WebException(string, System.Net.WebExceptionStatus, System.Net.WebExceptionInternalStatus, System.Exception)' has some invalid arguments
好像这个构造函数不存在!检查异常中的构造函数并检查catch块中的构造函数。
如您所见,我正在使用有效的构造函数。检查 here.
这里发生了什么?
问题是,您需要将 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);
}