Swift错误处理

2022-08-08  本文已影响0人  Lillian呆呆哒

错误处理是来响应程序在执行中可能遇到的错误条件,是响应错误以及从错误中回复的过程。与可选选项不同,后者可以使用值的存在或不存在来传达函数的成功或失败,与之相反,错误处理允许您确定失败的根本原因,并在必要时将错误传播到程序的另一部分。

在 Swift 中,错误用遵循 Error 协议的类型的值来表示。这个空协议表明该类型可以用于错误处理。Swift 的枚举类型尤为适合构建一组相关的错误状态,枚举的关联值还可以提供错误状态的额外信息。例如,请求网络错误

抛出一个错误可以让你表明有意外情况发生,导致正常的执行流程无法继续执行。抛出错误使用 throw 语句。

处理错误

某个错误被抛出时,附近的某部分代码必须负责处理这个错误,例如纠正这个问题、尝试另外一种方式、或是向用户报告错误。

在 Swift 中,有四种方法可以处理错误。可以将错误从函数传播到调用该函数的代码,使用do catch语句处理错误,将错误作为可选值处理,或断言不会发生错误。与许多语言(包括 Objective-C)中的异常处理不同,Swift 中的错误处理不涉及展开调用堆栈,而调用堆栈的计算成本可能很高。

1.函数表示可以通过在其声明中包含throws关键字来抛出错误。当您调用可以抛出错误的函数时,您将try关键字之前置于表达式。

2.Swift会自动将错误传播到当前范围之外,直到它们由catch子句处理。

do语句创建一个新的包含范围,允许将错误传播到一个或多个catch子句。

3.将错误转换为可选值

可以使用 try? 通过将错误转换成一个可选值来处理错误。如果是在计算 try? 表达式时抛出错误,该表达式的结果就为 nil。例如,在下面的代码中,x 和 y 有着相同的数值和等价的含义:

如果someThrowingFunction()抛出一个错误,x和y的值是nil。否则x和y的值就是该函数的返回值。注意,无论someThrowingFunction()的返回值类型是什么类型,x和y都是这个类型的可选类型。例子中此函数返回一个整型,所以x和y是可选整型。

4.禁止错误传递

有时你知道某个throwing函数实际上在运行时是不会抛出错误的,在这种情况下,你可以在表达式前面写try!来禁用错误传递,这会把调用包装在一个不会有错误抛出的运行时断言中。如果真的抛出了错误,你会得到一个运行时错误。

rethrows

rethrows表明:函数本身不会抛出错误,但调用闭包参数抛出错误,那么它会将错误向上抛。

rethrows主要用于参数有闭包的时候,闭包本身会有抛出异常的情况。

rethrows作为一个标志,显示的要求调用者去处理这个异常(不处理往上抛)。

上一篇下一篇

猜你喜欢

热点阅读