C# 为什么catch块从未在设备上执行?
考虑以下代码:C# 为什么catch块从未在设备上执行?,c#,xamarin.ios,task-parallel-library,xamarin,C#,Xamarin.ios,Task Parallel Library,Xamarin,考虑以下代码: Task.Factory.StartNew (() => { try { Console.WriteLine ("Throwing"); throw new Exception (); } catch { Console.WriteLine ("Gotcha!"); } }); 在iOS模拟器上,它打印投掷和抓到了如预期。 但是,当为设备编译时,它只打印抛出,从不打印Gotcha 为什么会发生这种情况
Task.Factory.StartNew (() => {
try {
Console.WriteLine ("Throwing");
throw new Exception ();
} catch {
Console.WriteLine ("Gotcha!");
}
});
在iOS模拟器上,它打印投掷和抓到了代码>如预期。
但是,当为设备编译时,它只打印抛出
,从不打印Gotcha代码>
为什么会发生这种情况?
我正在使用MonoTouch 6.0.8。
我还可以在6.0.6上复制它
我贴了一张照片。
(别管名字了——我发现这个时正在调查另一个崩溃)。我刚刚发现它只在启用LLVM的情况下发生。
也许这是一个bug,所以我会向Xamarin报告
有趣的是
BeginInvokeOnMainThread (() => {
new UIAlertView ("Gotta catch 'em all!", "", null, "OK", null).Show ();
});
在Console.WriteLine
callhelps之后,我看到了警报和日志条目
这是我的问题。可能是个愚蠢的问题,但是否满足了要求使用catch命令的条件
如果是这样,应用程序可能会在返回“Gotcha”之前中断,iOS命令将接管
我相信iOS会监听您的命令/应用程序是否以及何时中断,因为默认函数会处理此问题。与dealloc命令类似。尝试查看前面的stackoverflow post-@DJ:不确定它的相关性。我抛出了一个异常,catch
没有捕获它。@DJ,这显然是一个简单的例子来说明这个问题。这里有一个来自Xamarin的类似错误报告,声称它在relase 5.3.4中得到了修复:。你试过更新你的Monotouch版本吗?@Diego:我的是最新版本。:-)但这看起来确实非常相似。它听起来确实像一只虫子!奇怪的是,我无法在另一个项目中复制它。哼哼。不管它值多少钱,我也不能在我的项目中重做它。希望您能了解详情。:)@柯克:完成所有控制台。WriteLine
消息会出现在设备控制台中吗?@DanAbramov请填写这些问题,以便正确的开发人员能够解决它们:-)但奇怪的是,应用程序没有崩溃。