为什么catch块永远不会在设备上执行
本文关键字:执行 catch 永远 为什么 | 更新日期: 2023-09-27 17:49:27
考虑以下代码:
Task.Factory.StartNew (() => {
try {
Console.WriteLine ("Throwing");
throw new Exception ();
} catch {
Console.WriteLine ("Gotcha!");
}
});
在iOS模拟器上,它按预期打印Throwing
和Gotcha!
。
但是,在为设备编译时,只打印Throwing
而不打印Gotcha!
。
为什么会发生这种情况?
我用的是MonoTouch 6.0.8。我也可以在6.0.6上复制它。
我在这里提供了一个示例项目,您可以尝试在设备上运行它。
(别管名字了——我是在调查另一起崩溃时发现的)
我发现只有在启用LLVM时才会发生这种情况。
也许这是一个bug,所以我会报告给Xamarin。
有趣的是,
BeginInvokeOnMainThread (() => {
new UIAlertView ("Gotta catch 'em all!", "", null, "OK", null).Show ();
});
在Console.WriteLine
调用帮助之后-我同时看到警报和日志条目。
这是我的示例项目。
可能是一个愚蠢的问题,但是是否满足了需要catch命令的条件?
如果是这样,应用程序可能会在返回"Gotcha"和iOS命令接管之前中断。
我相信iOS会监听你的命令/应用程序是否以及何时中断,因为默认函数会开始处理这个问题。类似于dealloc命令