Swift – 错误处理
错误处理是对函数执行期间所面临的错误的响应。函数在遇到错误条件时可以抛出错误,捕获它并做出适当的响应。简而言之,我们可以向函数添加错误处理程序,以在不退出代码或应用程序的情况下对其进行响应。
在这里,我们将讨论抛出错误时保留的输出,而不是抛出错误时保留的输出。下面是一个函数canThrowAnError() 的例子,它带有一个在 Swift 循环外实现的错误处理程序。
示例 1:
func canThrowAnError() throws
{
// This function may or may not throw an error
}
do {
try canThrowAnError()
// no error was thrown
}
catch {
// an error was thrown
}
Remember throws is a keyword that indicates that the function can throw an error when called. Since it can throw an error, we need to add the try keyword in the beginning when the function is called. Errors are automatically propagated out of their current scopes unless handled by the catch clause do propagate the errors to one or more catch clauses.
真实场景
情况1:会抛出错误:如果安全带没有系好或燃油不足,该函数会抛出错误。因为 startCar() 可能会抛出错误,所以函数调用被包装在一个 try 表达式中。当一个函数被包装成一个 do函数,如果抛出任何错误,它将被传播到所提供的子句。
情况 2:它不会抛出错误:如果函数被调用。如果抛出错误,并且它与 carError.noSeatBelt 情况匹配,则将调用 blinkSeatBeltSign()函数。如果抛出错误,并且它与 carError.lowFuel 情况匹配,则使用捕获模式捕获的关联 [String] 值调用 goToFuelStation(_:)函数。
现在让我们用相同的编程语言演示上述案例:
示例 2:
func startCar() throws
{
// Insert the body of the function here
}
do
{
try
startCar()
turnOnAC()
}
catch carError.noSeatBelt
{
blinkSeatBeltSign()
}
catch carError.lowFuel(let fuel)
{
goToFuelStation(fuel)
}