由于Android没有冒泡我的异常,我在捕获我的异常时遇到了问题。一个简单的例子:
try
{
var x = new Tuple<double, double>(Convert.ToDouble(xmlDeser.Cell.Latitude), Convert.ToDouble(xmlDeser.Cell.Longitude));
return x;
}
catch (Exception ex)
{
DisplayAlert("Help",ex.Message, "ok");
}
我没有进入catch块,而是得到了一个错误,当x被设置时,它将我的代码置于中断模式:
0xFFFFFFFFFFFFFFFF in Android.Runtime.JNIEnv.monodroid_debugger_unhandled_exception C#
0x1A in Android.Runtime.JNINativeWrapper._unhandled_exception at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:12,5 C#
0x1D in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:23,26 C#
0x17 in System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw C#
0x6 in System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0 C#
0xC in Android.App.SyncContext. at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.App/SyncContext.cs:36,19 C#
0xE in Java.Lang.Thread.RunnableImplementor.Run at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Java.Lang/Thread.cs:36,6 C#
0x8 in Java.Lang.IRunnableInvoker.n_Run at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net7.0/android-33/mcw/Java.Lang.IRunnable.cs:84,4 C#
0x8 in Android.Runtime.JNINativeWrapper.Wrap_JniMarshal_PP_V at /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNINativeWrapper.g.cs:22,5 C#
这就违背了try,catch块的目的。如前所述,我在之后处于中断模式,所以永远不要进入我的catch块(即使在尝试继续之后)。
我把这个标签添加到xamarin中,因为我很好奇这是否也存在于xamarin中,而且它不是特定于maui的。
1条答案
按热度按时间c9qzyr3d1#
我已经把你的代码放在Maui项目模板的按钮点击事件中,它将成功运行。如:
以及结果消息:
所以原因应该是你没有在主线程上运行
DisplayAlert("help", ex.Message, "ok");
代码。对于android来说,所有关于UI更新的代码都必须在主线程上执行。您可以将代码更改为: