Objective c 无法从Xcode 3.2.3下的代理对象捕获异常

Objective c 无法从Xcode 3.2.3下的代理对象捕获异常,objective-c,xcode,xcode3.2,Objective C,Xcode,Xcode3.2,我使用HessianKit与服务器通信。在网络或服务器关闭的情况下,Hessian会抛出异常,所以我将每个Hessian调用都放在一个@try中@挡块。在我将Xcode从3.2.2升级到3.2.3之前,一切正常。我编写了一些测试代码,发现在Xcode 3.2.3下,如果从代理对象引发异常,则捕获异常将失败 MyProxy.h: @interface MyProxy : NSProxy { } @end MyProxy.m: @implementation MyProxy - (id)init

我使用HessianKit与服务器通信。在网络或服务器关闭的情况下,Hessian会抛出异常,所以我将每个Hessian调用都放在一个@try中@挡块。在我将Xcode从3.2.2升级到3.2.3之前,一切正常。我编写了一些测试代码,发现在Xcode 3.2.3下,如果从代理对象引发异常,则捕获异常将失败

MyProxy.h:

@interface MyProxy : NSProxy {
}
@end
MyProxy.m:

@implementation MyProxy

- (id)init {
    return self;
}

- (void)forwardInvocation:(NSInvocation *)invocation {
    NSLog(@"Call method %@", NSStringFromSelector([invocation selector]));
    [NSException raise:@"MyException" format:@"this is an exception"];
}

- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
    .....
}

@end
使用MyProxy的代码:

@try {
    MyProxy *p = [[MyProxy alloc] init];
    [p doSomething];
    [p release];
}
@catch (NSException * e) {
    NSLog(@"%@", e);
}
当这些代码在xcode 3.2.2下生成时,可以正确捕获异常。但在xcode 3.2.3下,程序在控制台上输出以下内容后终止:

2010-09-08 21:09:29.877公文包[34651:40b]调用方法doSomgthing
2010-09-08 21:09:29.879公文包[34651:40b]***由于未捕获的异常“MyException”而终止应用程序,原因:“这是一个异常”
2010-09-08 21:09:29.880公文包[34651:40b]堆叠:(
45955152,
47113004,
45692683,
45692522,
151932,
45426420,
45423090,
9352,
4417860,
4421967,
4447550,
4429047,
4461016,
53399932,
45234332,
45230248,
4420129,
4453234,
8812,
8666
)
在抛出“NSException”实例后调用terminate
程序收到信号:“SIGABRT”。

我能做什么?

也许您的项目/目标/可执行文件设置被弄乱了? 是否为您的配置/目标/etc勾选了“启用Objective-C例外”框


如果是,也许你应该向苹果公司提交一个bug。

我向苹果公司提交了一个bug,回复是:


已确定这是一个已知问题,工程部目前正在对此进行调查。此问题已在我们的错误数据库中以原始错误ID#7995323存档。

相同的代码,相同的项目配置。我勾选了“启用Objective-C异常”框,它被勾选。我应该提交一个bug吗?我是Objective-C的更新者。如果您的测试用例如此简单,我想不出任何理由它不起作用。