gpt4 book ai didi

objective-c - NSExpression 捕获无效参数

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:46 25 4
gpt4 key购买 nike

我正在使用 NSExpression 来评估数学字符串并且效果很好。但是我想有一种方法可以在输入字符串无效时捕获错误,例如“3++2”。有没有一种方法可以执行此操作而不是由于“NSInvalidArgumentException”而终止应用程序。抱歉,我对 objective-c 还很陌生。我现在使用的代码是:

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

最佳答案

我认为 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 中的异常应该只用于捕获意外的运行时错误。你的例子不合格。

关于objective-c - NSExpression 捕获无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18421307/

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