Xcode の奇妙な動作を発見しました。Xcode デバッガーは、このコードのキャッチされない例外で中断しません。
@try { @throw @"AA"; }
@catch (...) { @throw; }
@finally { return; }
ただし、このコードの例外がキャッチされ、デバッグのために Xcode ブレークの実行がトリガーされます。
@try { @throw @"AA"; }
@catch (...) { @throw; }
@finally { }
@finally
ブロックreturn
のデバッガーが例外をキャッチできない場合。この問題を見たことがありますか?これが本当に問題なのかどうかはわかりません。見方によっては、設計された動作のように見えます。どうしてか分かりません。ブロックreturn
するべきではないですか?@finally
私の問題は、例外を静かに飲み込むため、検出できないことです。
残念なことに、try...catch...finally の動作がよくわかりません。例外をキャッチするコードはほとんど使用していません。これは設計された動作ですか、それともバグのある動作ですか? これは既知の問題ですか?
ここに私の環境があります。
- Xcode バージョン 4.4 (4F250)
- OS X 10.7.4
編集
完全なテスト ソース コードを添付します。
#import <Foundation/Foundation.h>
int main (int a, char** b)
{
@try
{
NSLog(@"trying something...");
@try { @throw @"AA"; }
@catch (...) { @throw; }
@finally { return 0; }
}
@catch (...)
{
NSLog(@"something catched.");
}
@finally
{
NSLog(@"finally...");
}
}