Noo*_*oyi 1 error-handling objective-c nsstring nsexception ios
我正在使用Objective C编写Xcode中的计算器进行学习(我是初学者.).这是我正在使用的代码(计算NSString).
- (IBAction)resultButtonPressed:(id)sender {
NSExpression *expression = [NSExpression expressionWithFormat:label_result.text];
label_result.text = [NSString stringWithFormat:@"%@", [expression expressionValueWithObject:nil context:nil]];
}
Run Code Online (Sandbox Code Playgroud)
问题是,只要用户键入"不可计算"的内容,如"6(5 + 1)"而不是"6*(5 + 1)",程序就会崩溃并且我得到这个:
2014-11-01 02:36:10.577 The Calculator[1515:575020] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unable to parse the format string "6(5+1) == 1"'
*** First throw call stack:
(0x18672de48 0x196e280e4 0x18753ad98 0x187538e2c 0x18764b128 0x18764b0c4 0x100062244 0x18af110f8 0x18aefa22c 0x18af10a94 0x18af10720 0x18af09c74 0x18aedd38c 0x18b17c1b4 0x18aedb8f4 0x1866e60e8 0x1866e538c 0x1866e343c 0x1866111f4 0x18f7a75a4 0x18af42784 0x10006286c 0x197496a08)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
Run Code Online (Sandbox Code Playgroud)
所以在过去的半小时里我一直在搜索一个方法/函数,它允许你首先检查 NSString是否可以计算,这样我就可以(如果需要)创建一个警告标签或类似的东西,但我没有找一个.有没有人可以帮助我?
谢谢!
NSExpression不是设计为错误检测,用户可纠正,表达式解析器.开发人员可以使用它来评估确保正确形成的表达式.也没有内置的API来做到这一点.
您必须在其他地方寻找具有用户友好错误处理的表达式解析器.鉴于表达式解析是一个典型的Comp Sci 101问题,谷歌搜索类似"C数学表达式解析器"或"iOS数学表达式解析器"或任何其他几十个关键字汤组合将产生代码和讨论.
注意:不要打扰异常捕获路径.iOS/OS X中的例外仅用于表示程序员错误,并非旨在可恢复.
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |