Swift 2.1 - 调用可以抛出,但它没有用'try'标记并且错误没有被处理

Posted

技术标签:

【中文标题】Swift 2.1 - 调用可以抛出,但它没有用\'try\'标记并且错误没有被处理【英文标题】:Swift 2.1 - Call can throw, but it is not marked with 'try' and the error is not handledSwift 2.1 - 调用可以抛出,但它没有用'try'标记并且错误没有被处理 【发布时间】:2016-01-25 21:13:55 【问题描述】:

以下代码出现错误,我该如何解决?

'调用可以抛出,但没有标记'try',错误未处理'

 let reachability = Reachability.reachabilityForInternetConnection() // - Error Here

        reachability.whenReachable =  reachability in
            if reachability.isReachableViaWiFi() 
                let alertController = UIAlertController(title: "Alert", message: "Reachable via WiFi", preferredStyle: .Alert)

                let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
                alertController.addAction(defaultAction)

                self.presentViewController(alertController, animated: true, completion: nil)

            
            else 
                let alertController = UIAlertController(title: "Alert", message: "Reachable via Cellular", preferredStyle: .Alert)

                let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
                alertController.addAction(defaultAction)

                self.presentViewController(alertController, animated: true, completion: nil)
            
        
        reachability.whenUnreachable =  reachability in
            let alertController = UIAlertController(title: "Alert", message: "Not Reachable", preferredStyle: .Alert)

            let defaultAction = UIAlertAction(title: "OK", style: .Default, handler: nil)
            alertController.addAction(defaultAction)

            self.presentViewController(alertController, animated: true, completion: nil)
        

        reachability.startNotifier() // - Error Here

    

【问题讨论】:

你看过github.com/ashleymills/Reachability.swift上的“示例 - 闭包”吗? @Leo Dabus 您能否更新此问题中的以下代码,谢谢,目前出现错误。 @GurvierSinghDhillon 尝试先阅读 Martin R 刚刚为您发布的链接 @Mark R 我可以使用您提供的链接获得该方法,但是我想要在这里实现的是显示一个 AlertController,无论它们是否是互联网连接。 【参考方案1】:

如果您查看example,则需要使用try 包装呼叫。

let reachability = try Reachability.reachabilityForInternetConnection()

Swift 的 try/catch 系统旨在让开发人员一目了然,这意味着您需要使用 try 关键字标记任何可以抛出的方法。

当函数抛出错误时,它会改变程序的流程,因此您可以快速识别代码中可能抛出错误的位置,这一点很重要。要识别代码中的这些位置,请在调用可能引发错误的函数、方法或初始化程序的一段代码之前编写 try 关键字(或 try?try! 变体)。

您可以在 Apple 参考资料site 阅读更多内容。

【讨论】:

以上是关于Swift 2.1 - 调用可以抛出,但它没有用'try'标记并且错误没有被处理的主要内容,如果未能解决你的问题,请参考以下文章

“调用可以抛出,但它没有用'try'标记并且错误没有处理“[重复]

我调用了 timeBeginPeriod(1),但它没有用

按照教程制作不和谐机器人,但它没有用

Swift 2.2 HealthKit - 调用可以抛出,但它没有标有“尝试”并且错误未处理

Swift 2.2 HealthKit - 调用可以抛出,但它没有标有“尝试”并且错误未处理

React Native 项目,我遵循 Facebook 的指导。但它没有用