【发布时间】:2020-03-26 20:35:58
【问题描述】:
我有这些课
//Class 1, ViewModel
public async System.Threading.Tasks.Task<JObject> ExecuteSystemObject(string parameters)
{
...
dynamic j = await ExternalProject.ExecuteSomething<MyModel>(parameters);
//How i can catch the error from the another class?
...
}
//Class2, Manager
public async Task<Object> ExecuteSomething<T>() where T : IModel, new()
{
...
WebResponse response = await ExternalProject.ExecuteRequestAsync(PostRequest);
...
}
//Class 3, from a binding Project
public static async Task<WebResponse> ExecuteRequestAsync(WebRequest request)
{
try
{
return await request.GetResponseAsync();
}
catch(WebException e)
{
var resp = new StreamReader(e.Response.GetResponseStream()).ReadToEnd();
dynamic obj = JsonConvert.DeserializeObject(resp);
//I have the message error here
var messageFromServer = obj.error.text;
throw e;
}
}
我只能在最后一个类中得到错误,如果我尝试在另一个类中获取 WebException,它将为我返回 null。那么,如何将该错误传递给主类(1º one,ViewModel)?
【问题讨论】:
-
只需 throw 以保留堆栈跟踪 stackoverflow.com/a/178464/1638261,并且您还应该在要重新捕获异常的操作上设置一个 try catch 块。
-
“我只能在最后一个类中得到错误,如果我尝试在另一个中获取WebException,它将为我返回null。”这很奇怪。请更新您的问题并添加您是如何实现的。仅当您能够在该级别解决异常时才捕获异常。
标签: c# system.net.webexception