在Swift 3中使用错误处理:

通常,在进行编码时,我们的应用程序会遇到很多问题,因此能够识别错误至关重要。 想象一下,您的应用程序需要Internet连接,但没有提供连接,或者您想要检索的数据不再可用,如果有一条消息通知您此用户错误或指出该错误发生的位置,那不是很好。 这是Swift 3中错误处理非常方便的地方。 错误处理不仅限于Internet连接,还可以在整个应用程序中使用。 它是捕获特定错误的有用工具,可以节省时间和麻烦,因此您无需通读数百行代码即可找出问题所在。

If-Else陈述

当我开始使用错误处理时,我无法想到它与if-else语句相比具有相似之处。 您甚至可能会想到为什么我根本需要错误处理。

  var fullyFuctional = true 
  func usePhone(){ 
如果功能完整{
打印(“ 100%模式😁”)
}
其他{
打印(“电池电量低😭”)
}
}

使用if-else语句来识别您的错误有几个问题。 第一个问题是代码的可读性。 想象一下在else块中创建具有更多步骤的复杂函数,找到您的错误可能会感到困惑,我们的else块立即变得肿。 第二个问题是,我们希望尽早通知开发人员我们的功能可能会导致错误。 您可以在上面的示例中看到,如果要在函数上堆叠更多代码,就不会轻易识别错误消息。

使用错误处理

为了开始使用错误处理,我想介绍一下错误协议。 在我们的应用程序中,可能要显示几个错误。 我们需要创建一个符合我们的错误协议的枚举,并列出我们案例中的各种错误。

 枚举PhoneError:错误{ 
电池不足
电池没电
案例软件问题
案例屏幕问题
}

当我们需要应用程序显示错误消息时,我们可以轻松地引用我们创建的枚举。

接下来,我想通知我,我的函数可以使用throws导致错误。 通过在我的参数后面加上引发 ,则无需编译其余代码即可发现我的错误。 在开始实现其余代码之前,我告诉我的函数识别这些错误。

  func usePhone()抛出{ 
如果lowBattery {
抛出PhoneError.lowBattery
  } 
如果deadBattery {
抛出PhoneError.deadBattery
}
 如果软件问题{ 
抛出PhoneError.softwareIssue
  } 
如果screenIssue {
抛出PhoneError.screenIssue
}

做,尝试,赶上

错误处理的另一种方法是使用Do,Try和Catch语句:

 做{ 
尝试usePhone()
}
捕捉PhoneError.lowBattery {
打印(“不再加电🙀”)
}
捕捉PhoneError.screenIssue {
打印(“什么也看不到!🙀”)
}
}

通过陈述do,try和catch语句,我们说这有可能出错。 在Do块中,我们可以实现我们所有的功能或方法。 另外,我们必须在函数之前使用Try来协助错误处理。 在Catch块中,我们可以列出该函数可能导致的所有错误。 我们还可以打印出要显示给用户的消息,并继续创建代码来处理此错误。

尝试,尝试?,然后尝试!

我想提一下,您可以在应用程序中实现try的三个版本。 尝试是与我们的Do-Catch语句结合使用的传统方法。

尝试? 与可选项一起使用。 我确信我们很多人都对可选功能的使用很熟悉, 请尝试一下? 以相同的方式使用。 我们正在说明返回是否成功或失败,如果有错误,则返回值将变为nil。 需要注意的重要一点是,由于我们在这里使用了可选参数,因此我们必须解开返回值。 尝试? 当我们不关心错误发生的原因,而是是否会产生错误时,使用此命令。 如果要实施Try? ,由于我们不在乎是什么原因导致了错误,因此无需使用Do-Catch语句。

尝试! 与bang运算符一起使用。 就像在大多数情况下在代码中应用了bang运算符一样,我们声明函数将永不失败,并且数据将始终对我们可用。 但是,如果我们的功能确实失败,则将导致我们的应用程序崩溃。

感谢收看! 直到下次time!