Ame*_*ale 3 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];
Run Code Online (Sandbox Code Playgroud)
我认为NSExpression不是适合此工作的工具。该类是Cocoa谓词系统的一部分,旨在仅接受格式正确的输入。
我建议您寻找合适的数学解析器。我相信GCMathParser是一个不错的选择。还有DDMathParser。
如果您坚持使用NSExpression,则可以捕获如下异常:
@try {
// the code that potentially raises an NSInvalidArgumentException
} @catch (NSException *exception) {
if ([[exception name] isEqualToString:NSInvalidArgumentException]) {
// your error handling
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,这是不好的做法。Objective-C中的异常仅应用于捕获意外的运行时错误。您的示例不符合条件。
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |