NSExpression捕获无效参数

时间:2013-08-24 17:35:35

标签: objective-c invalid-argument nsexpression

我正在使用NSExpression来评估数学字符串,它运行良好。但是我希望有一种方法可以在输入字符串无效时捕获错误,例如“3 ++ 2”。有没有办法去做这个而不是由于'NSInvalidArgumentException'终止应用程序。对不起,我对objective-c相当新。我现在使用的代码是:

NSExpression *exp = [NSExpression expressionWithFormat: string];
NSNumber *result = [exp expressionValueWithObject:nil context:nil];
answer = [result stringValue];

1 个答案:

答案 0 :(得分:4)

我认为NSExpression不适合这里的工作。该类是Cocoa谓词系统的一部分,旨在接受格式良好的输入。

我建议您寻找合适的数学解析器。我相信GCMathParser是个不错的选择。还有DDMathParser

如果你坚持使用NSExpression,你可以捕获这样的异常:

@try {
  // the code that potentially raises an NSInvalidArgumentException
} @catch (NSException *exception) {
  if ([[exception name] isEqualToString:NSInvalidArgumentException]) {
    // your error handling
  }
}

但请注意,这是不好的做法。 Objective-C中的异常只应用于捕获意外的运行时错误。您的示例不符合条件。