1

我在我的项目中使用 DDMathParser 库,我想使用错误处理。如果用户输入错误的表达式,我希望将错误显示给用户。什么是我的 catch 块来检测和显​​示相关错误及其位置。以下是我的示例代码:

do{
   var X = "(3 + 4" //Missed Closed Parenthesis
   let evaluator = Evaluator()
   let expression = try Expression(string: X)
   let value = try evaluator.evaluate(expression)
}
catch
{

}

根据 DDMathParser,它应该是分组错误,并且通过使用 Range,它应该指定括号丢失或发生任何其他错误类型的位置。这是它的文档

4

1 回答 1

0

您必须将错误转换为 aGroupedTokenError才能访问特定的 DDMathParser 错误消息。

do {
    let X = "(3 + 4"
    let evaluator = Evaluator()
    let expression = try Expression(string: X)
    let value = try evaluator.evaluate(expression)
} catch let error as GroupedTokenError {
    print(error._code)  // 1
    print(error.kind)  // MissingCloseParenthesis
    print(error.range)  // 6..<6
} catch let error as NSError {
    print(error.debugDescription)
}

请注意,您还必须为非 DDMathParser 错误添加通用错误捕获块(在我的示例中,通用 ErrorType 将桥接到 NSError 以以 Cocoa 方式显示内容)。

于 2015-10-09T11:19:47.157 回答