iOS Swift 2.1 - 使用 Try Catch 处理错误
Posted
技术标签:
【中文标题】iOS Swift 2.1 - 使用 Try Catch 处理错误【英文标题】:iOS Swift 2.1 - Error Handling using Try Catch 【发布时间】:2016-03-11 12:18:58 【问题描述】:我正在尝试使用 swift 2.1 进行错误处理,
以下场景,
var test: NSArray! = ["Test1", "Test2"]
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
do
try testing()
catch
print("error")
func testing() throws
print(test.objectAtIndex(7))
在上述情况下,我的应用程序崩溃并说以 NSException 类型的未捕获异常终止,但我希望控件应该位于 Catch 块内而不是崩溃。
我想知道解决办法吗?任何人都可以在这方面做必要的事情
【问题讨论】:
Do-Try-Catch 系统只捕捉错误,不捕捉异常。 【参考方案1】:使这项工作发挥作用的唯一方法是抛出错误(正如 Eric D. 在 cmets 中指出的那样):
游乐场:
enum ArrayError : ErrorType
case OutOfBounds
class SomeClass
var test: NSArray! = ["Test1", "Test2"]
func testCode()
do
try testing(3)
catch let error
print("error = \(error)") // for index 3 this would print "error = OutOfBounds\n"
func testing(index: Int) throws -> String
guard index < test.count else
throw ArrayError.OutOfBounds
return test[index] as! String
let sC = SomeClass()
sC.testCode()
【讨论】:
以上是关于iOS Swift 2.1 - 使用 Try Catch 处理错误的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 使用 Parse SDK 登录(iOS 9、Xcode 7.1、Swift 2.1)
swift 笔记:iOS与JavaScript的交互(一):UIWebView - 2.1直接使用字符串通过评估Java脚本(来自:)
多种协议的 Swift 类一致性(XCode 7、iOS 9、Swift 2.1)
Braintree node.js w/iOS 9 Swift 2.1 - 客户端令牌错误
swift 笔记:iOS与JavaScript的交互(一):UIWebView - 2.1 UIWebViewDelegate