【发布时间】:2023-03-14 13:07:01
【问题描述】:
我发现了 Xcode 的奇怪行为。 Xcode 调试器不会因为这段代码中的未捕获异常而中断。
@try { @throw @"AA"; }
@catch (...) { @throw; }
@finally { return; }
但此代码中的异常捕获并触发 Xcode 中断执行以进行调试。
@try { @throw @"AA"; }
@catch (...) { @throw; }
@finally { }
如果@finally 阻止returns 调试器无法捕获异常。你见过这个问题吗?我不确定这真的是一个问题。从角度来看,它看起来像设计的行为。我不知道为什么。我不应该在@finally 中阻止return 吗?我的问题是它会默默吞下异常,所以我无法检测到它。
真丢脸,我不太懂 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...");
}
}
【问题讨论】:
-
听起来像是一个潜在的错误,这是您正在编译的实际代码吗?无论如何,Cocoa/iOS 中的异常并非旨在用于可恢复的错误。当 Cocoa/iOS 中抛出异常时,一般的行为是报告并崩溃。
-
这是临时代码,仅供测试,但它是我编译的实际代码。
标签: objective-c xcode debugging exception