別のスレッドのあるスレッドからスローされた例外をキャッチすることは可能ですか?たとえば、私はメインスレッドからスレッドを生成しています。生成されたスレッドは、キャッチされない例外をスローする可能性があります。産卵スレッドがこれらの例外をキャッチすることは可能ですか?Objective-Cの別のスレッドのあるスレッドからスローされた例外を捕捉できますか?
解決策の1つは、スポーンされたスレッドのエントリポイントから例外をキャッチし、NSNotification
を送信して例外を処理することです。それから、産卵スレッドはNSNotification
を聞くことができます。しかし、この解決法は基本的に@catch句をNSException
という異なるタイプのパラメータとして再実装しているため、ややこしいものです。私は他の解決策があるかどうかを確認したいと思っていました。
例外は* iOS/Mac OS X *での回復不可能なエラーを示すためにのみ使用されています。回復可能なものについて例外を使用している場合は、間違っています。 – bbum
回復不能なエラーに対してのみ例外を使用することは*慣例*であり、それ自体が間違っている*ではありません。例外の使用には、Obj-C(b)リソースリーク(b2)メモリリークでパフォーマンスが低下するという一般的な3つの異論があります。 (b)は、言語に依存しない例外ベースの設計で扱われなければならず、(b2)の取り扱い((b)のサブセット)は、ガベージコレクション、Obj-C++のARC、または '-fobjc-arc-exceptions'を使用したObj-CのARCをサポートしています。したがって、例外を正しく使用している場合は、「間違っている」わけではありません。あなたのQは@Sevaを参照してください。 – CRD
@bbumこれは「回復不能な」状況です。 –