我正在使用以下代码调用API...
这段代码处理了所有的错误并显示了适当的弹窗,但仅在特定的错误发生时应用程序崩溃。
public async Task<Dictionary<string, string>> GetDataAsync()
{
try
{
var url = "https://address.com/myapi";
var request = new RestRequest(url, Method.GET) { Timeout = 5000 };
request.AddAuthenticationHeaders();
var response = await _client.ExecuteTaskAsync(request);
return ProcessResponse(response);
}
catch (Exception e)
{
throw new MyApplicationException(e.Message, e.InnerException, AlertCode.UnknownError);
}
}
以上代码被以下调用:
public async Task GetData()
{
data= await webCaller.GetDataAsync();
}
这段代码处理了所有的错误并显示了适当的弹窗,但仅在特定的错误发生时应用程序崩溃。
System.Net.WebException: Error: ConnectFailure (Network is unreachable) ---> System.Net.Sockets.SocketException: Network is unreachable
我通过调用API并关闭连接来再现这个错误,因此显然网络将无法访问。
在我的Activity中,我在这里处理异常
protected virtual void OnException_Occured(object sender, RaiseThrowableEventArgs e)
{
RunOnUiThread(
() =>
{
ExceptionPopup.Popup = new CommonPopup(this, ExceptionHelper.GetUserFriendlyMessage(e.Exception));
ExceptionPopup.Popup.Show();
});
}
ReportError(e.Exception);
e.Handled = true;
}
OnResume:
protected override void OnResume()
{
base.OnResume();
AndroidEnvironment.UnhandledExceptionRaiser += OnException_Occured;
}
OnPause:
protected override void OnPause()
{
base.OnPause();
AndroidEnvironment.UnhandledExceptionRaiser -= OnException_Occured;
}