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请填写这些问题,以便正确的开发人员能够解决它们:-)但奇怪的是,应用程序没有崩溃。