Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
投掷会严重影响Swift的表现吗?_Swift - Fatal编程技术网

投掷会严重影响Swift的表现吗?

投掷会严重影响Swift的表现吗?,swift,Swift,我读过其他的帖子,比如,在C++这样的语言中抛出异常应该是在真正异常情况下才有的事情,因为编译器尽可能地努力使代码在非异常情况下尽可能快地运行,然后通过昂贵的异常情况来为这个速度付出代价。斯威夫特也是这样吗 Swift开发人员通常都喜欢抛出异常,我想知道我是否应该尝试避免使用do-try-catch模式。Swift中的错误处理说明如下: 。。。throw语句的性能特征与return语句的性能特征相当 因此,因为您无论如何都要退出当前范围,投掷几乎没有任何额外成本。将Swift中的throw和ca

我读过其他的帖子,比如,在C++这样的语言中抛出异常应该是在真正异常情况下才有的事情,因为编译器尽可能地努力使代码在非异常情况下尽可能快地运行,然后通过昂贵的异常情况来为这个速度付出代价。斯威夫特也是这样吗

Swift开发人员通常都喜欢抛出异常,我想知道我是否应该尝试避免使用
do-try-catch
模式。

Swift中的错误处理说明如下:

。。。throw语句的性能特征与return语句的性能特征相当


因此,因为您无论如何都要退出当前范围,投掷几乎没有任何额外成本。

将Swift中的
throw
catch
看作是一种安全、可控的
goto
jump
形式。它是安全和可控的,因为编译器确保你不能抛出,除非有人在那里抓住它。因此,在编译时完全知道在什么情况下会发生什么


这与Objc异常完全不同,在Objc异常中,事先什么都不知道,在运行时,我们只是开始盲目地沿着调用堆栈走,在每一步都进行自省,最终可能出现崩溃。

相关:好吧,这两种情况都说它类似于
返回
语句,如果您自己处理错误,然后离开范围,这样看起来就没有额外的成本,那么无论如何都会发生这种情况。有趣。这很有道理,也是一个很好的解释方法。您所做的几乎与
返回时所做的
跳转
完全相同,只是要转到另一个已知的安全程序计数器。