.NET MAUI Android异常无法冒泡至try-catch块的问题求助
.NET MAUI Android异常无法冒泡至try-catch块的问题求助
我在.NET MAUI的Android平台上遇到了一个异常捕获的棘手问题——系统没有把异常冒泡到我的try-catch块里,这直接让try-catch失去了原本的作用。而且我也好奇这个问题是不是在Xamarin里同样存在,所以也关联了Xamarin的相关场景。
先给大家看一段简单的示例代码:
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时,程序直接触发错误进入中断模式,完全不会走到我的catch块里。抛出的异常堆栈信息如下:
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#
更无奈的是,就算我在中断模式下尝试继续执行程序,它也依然不会进入catch块,这完全违背了try-catch的设计初衷。有没有朋友遇到过类似的问题,或者能帮我分析下这到底是怎么回事?
备注:内容来源于stack exchange,提问作者rickster26ter1
相关产品推荐
相关产品推荐

