Swift Catch运行时异常

时间:2017-03-23 10:41:08

标签: objective-c swift

我正在对应用程序运行模糊测试,因此我正在寻找未处理的运行时错误。该应用程序是用ObjC和Swift编写的,但单元测试是用Swift编写的。

我理解swift的基础不是捕获任意运行时异常,但这纯粹是为了单元测试。如何捕获运行时这些异常(即索引越界等)

1 个答案:

答案 0 :(得分:6)

要在Swift中捕获Obj-C异常,我使用的是一个简单的Obj-C类:

********** Error **********

ERROR: column "Default-Media" does not exist
SQL state: 42703
Character: 53

在Swift中称为

#import "ObjC2Swift.h"

@implementation ObjC

+ (id)catchException:(id(^)())tryBlock error:(__autoreleasing NSError **)error {
    @try {
        id result = tryBlock();
        return result;
    }
    @catch (NSException *exception) {
        if (error) {
            *error = [[NSError alloc] initWithDomain:exception.name code:0 userInfo:exception.userInfo];
        }
        return nil;
    }
}

@end

对于不返回任何内容的块,您可能需要不同的变体。

不被滥用。 Obj-C异常是邪恶的,我只是因为我需要一个使用它的库。