gpt4 book ai didi

objective-c - 在 Linux 中使用 objective-c 捕获异常

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:02 24 4
gpt4 key购买 nike

我有一些示例代码没有按照我认为应该的方式运行。

#import <Foundation/NSString.h>
#import <Foundation/NSException.h>
#import <Foundation/NSAutoreleasePool.h>
#import <stdio.h>

int main( int argc, const char *argv[] ) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

@try {
NSException *e = [NSException
exceptionWithName: @"NSException"
reason: @"The level is below 0"
userInfo: nil];
@throw e;
} @catch ( NSException *e ) {
printf( "+%s: ", [[e name] UTF8String] );
}

[pool release];
}

我按如下方式运行它:

> gcc -g -c main.m -fconstant-string-class=NSConstantString -I/usr/include/GNUstep
> gcc main.o -lgnustep-base
> ./a.out

结果是:

Aborted

稍微尝试一下 GNU 调试器,我发现永远不会到达 catch 子句。它似乎在 mac 上工作。

为什么我不进入 catch 子句?

最佳答案

所需的答案可以在这个邮件线程中找到:http://www.mail-archive.com/discuss-gnustep@gnu.org/msg11979.html

要获得正确的 objective-c 异常处理,可能需要使用 -fobjc-exceptions 标志进行编译。

> gcc -g -c main.m -fconstant-string-class=NSConstantString -fobjc-exceptions -I/usr/include/GNUstep
> gcc main.o -lgnustep-base
> ./a.out

关于objective-c - 在 Linux 中使用 objective-c 捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4735836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com