swift - 如何使用 try catch 停止在 swift3 中崩溃

标签 swift

在 objective-c 中,我们使用 try catch 来停止崩溃,例如

- (void)viewDidLoad {
[super viewDidLoad];

tableData = [NSArray arrayWithObjects:@"Egg Benedict", @"Mushroom Risotto", @"Full Breakfast", @"Hamburger", @"Ham and Egg Sandwich", @"Creme Brelee", @"White Chocolate Donut", @"Starbucks Coffee", @"Vegetable Curry", @"Instant Noodle with Egg", @"Noodle with BBQ Pork", @"Japanese Noodle with Pork", @"Green Tea", @"Thai Shrimp Cake", @"Angry Birds Cake", @"Ham and Cheese Panini", nil];



@try {
    NSLog(@"%@",tableData[1000]);
     } @catch (NSException *exception) {
    NSLog(@"%@",exception);
  }  
 }

但是当我使用 swift 3 时,显示警告并且应用程序崩溃

enter image description here

任何人都可以解释一下,我该如何阻止它。我从谷歌阅读了一些主题但无法理解。谁能帮帮我。

最佳答案

Swift 数组实现了一个下标以便于访问它的成员。下标不能抛出。您可以实现 Collection 协议(protocol)的扩展,并创建一个抛出函数,如果索引低于 Collection 的 (.count-1),则获取该成员,或者如果它高于,则抛出错误。

或者,您可以实现一个返回常量的下标,然后防范该常量,并在防范的 else 语句中抛出错误(但除非您在该 do block 中有 try 语句,否则它将是有点语法脂肪)。

关于swift - 如何使用 try catch 停止在 swift3 中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45116688/

相关文章:

ios - fatal error : unexpected found nil while unwrapping an optional values

swift - 如何快速将电影保存到自定义命名的相册

ios - SVRevealViewController 与顶部布局指南的偏移量有误

swift - 如何从 bundle 而不是下载中设置kml的图标样式

swift - 为什么不设置 UIView 的边界将其大小限制为这些边界

ios - 如何快速更新用户默认值?

iOS 创建对象最佳实践

ios - iOS 中通过推送通知检测应用程序是否未打开?

ios - Twilio Remote view(TV VideoView)在接收端是空白的

ios - 在 Swift 中将变量从前台传递到后台