我正在对应用程序运行模糊测试,因此我正在寻找未处理的运行时错误。该应用程序是用ObjC和Swift编写的,但单元测试是用Swift编写的。
我理解swift的基础不是捕获任意运行时异常,但这纯粹是为了单元测试。如何捕获运行时这些异常(即索引越界等)
答案 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异常是邪恶的,我只是因为我需要一个使用它的库。