2

次のコードを検討してください。

Task.Factory.StartNew (() => {
    try {
        Console.WriteLine ("Throwing");
        throw new Exception ();
    } catch {
        Console.WriteLine ("Gotcha!");
    }
});

iOS シミュレーターでは、期待どおりに印刷ThrowingGotcha!れます。
ただし、デバイス用にコンパイルすると、印刷されるだけで、印刷ThrowingされませんGotcha!

なぜこれが起こるのですか?
MonoTouch 6.0.8 を使用しています。
6.0.6でも再現できます。

ここにサンプル プロジェクトを用意しました。デバイス上で実行してみてください
(名前は気にしないでください。これを見つけたとき、別のクラッシュを調査していました)。

4

2 に答える 2

2

LLVMが有効になっている場合にのみ発生することがわかりました。
おそらくバグなので、Xamarin に報告します。

興味深いことに、追加

BeginInvokeOnMainThread (() => {
    new UIAlertView ("Gotta catch 'em all!", "", null, "OK", null).Show ();
});

電話の後Console.WriteLine- アラートとログ エントリの両方が表示されます。

私のサンプルプロジェクトがあります。

于 2012-12-21T23:28:30.260 に答える
1

ばかげた質問かもしれませんが、catch コマンドを必要とする条件は満たされていますか?

その場合、「Gotcha」を返す前にアプリケーションが壊れて、iOS コマンドが引き継がれる可能性があります。

デフォルトの関数がこれを処理するために起動するため、iOS はコマンド/アプリケーションが壊れるかどうか、いつ壊れるかをリッスンしていると思います。dealloc コマンドに似ています。

于 2012-12-21T23:29:41.557 に答える