如何处理NSException错误

问题描述:

所以,我一直在制作一个基本的计算器。但我遇到了一个问题。 My code.如何处理NSException错误

@IBAction func calculate(_ sender: UIButton) { 
    let stringExpression = resultLabel.text! 
    let expression = NSExpression(format: stringExpression) 
    let result = expression.expressionValue(with: nil, context: nil) as! NSNumber 
    resultLabel.text! = String(result.doubleValue) // Writes response on textLabel :D 
}  

上述工程的代码。但是,当输入如5 ++ 6输入时,它会崩溃我的应用程序。我不太清楚如何处理这个问题。

输入无效输入时会显示以下错误。 The error given. libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)

我不知道如何让它显示“错误”。 这应该适用于任何类型的错误。

+2

复制/粘贴代码或错误消息,不显示屏幕截图。 – Larme

+0

固定:) @Larme –

+1

并没有明确的错误信息?因为我试过你的代码,并得到了真正的(和有用的消息):“***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'无法解析格式字符串”5 ++ 6 == 1“'”而且它发生在“let expression = NSExpression(format:stringExpression)”。这是真实的信息来阅读和提供您的问题。 – Larme

必须将有效表达式传递给NSExpression初始化程序,否则将引发异常。没有Swift唯一的方法来捕获异常,所以唯一的可能性是确保只生成有效的输入。

+0

或者:...使用一个采用Swift错误处理的objc包装器。 –