Android Xamarin应用程序即使在处理异常时也会崩溃
我正在使用下面的代码调用APIAndroid Xamarin应用程序即使在处理异常时也会崩溃,android,exception,error-handling,xamarin,Android,Exception,Error Handling,Xamarin,我正在使用下面的代码调用API public async Task<Dictionary<string, string>> GetDataAsync() { try { var url = "https://address.com/myapi"; var request = new RestRequest(url, Method.GET) { Timeout = 5000 };
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);
}
}
此代码处理所有错误并显示正确的弹出窗口,应用程序将继续,但只有在出现此特定错误时,应用程序才会崩溃
System.Net.WebException: Error: ConnectFailure (Network is unreachable) ---> System.Net.Sockets.SocketException: Network is unreachable
我通过调用API并关闭连接来重现此错误,因此显然无法访问网络
在我的活动中,我在这里处理异常
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;
}
简历:
protected override void OnResume()
{
base.OnResume();
AndroidEnvironment.UnhandledExceptionRaiser += OnException_Occured;
}
暂停:
protected override void OnPause()
{
base.OnPause();
AndroidEnvironment.UnhandledExceptionRaiser -= OnException_Occured;
}
它是在每次调用
GetData()
时崩溃,还是随机崩溃
我今天遇到了一个类似的问题,我的异步API调用使iOS应用程序随机崩溃。我不确定我的问题是否与你的有关,但我会解释我做了什么,以防对你有所帮助
在我的案例中,问题与连接无关。由于某些原因,API调用并不总是成功的,当它失败时,它会将null返回给我的变量,这会导致以后出现“对象未设置为对象的实例”错误。因为我不能保证每次API调用都返回非null值,所以我所做的就是将API调用放入while循环中,并检查是否得到null值
下面是我的代码示例:
Message[] allMessages;
while(allMessages==null)
{
allMessages = await Message.GetAsync();
}
当应用程序崩溃时,日志是什么样子的?@Wosi在这里看一看,我遇到了完全相同的问题。你找到解决方案了吗?@coalmee不是一个确切的解决方案,而是我开始使用CurrentDomain_UnhandledException的一种变通方法。它可以处理一些异常,但仍然会有一些碰撞。在按下拨打电话的按钮的同时,我正在关闭wifi以重现此错误,我收到了错误,但没有处理
Message[] allMessages;
while(allMessages==null)
{
allMessages = await Message.GetAsync();
}