gpt4 book ai didi

swift - Swift 2.0 do-try-catch 和常规 Java/C#/C++ 异常有什么区别

转载 作者:IT王子 更新时间:2023-10-29 05:50:03 28 4
gpt4 key购买 nike

似乎 Swift 2.0 已经从传统的 ObjC(返回 NSError)和 Swift 1.X(成功/失败选项)约定的运行时错误处理改变为看起来非常类似于 Java/C# 等语言中的异常处理/C++/等

Apple 传统上有 emphasized use of NSError instead of throwing NSException for runtime errors (与程序员错误相比),因为 NSException 堆栈展开可能会导致默认 ObjC 编译器设置的内存泄漏。

然而,现在他们设计了一些看起来与传统异常非常相似的东西。我的问题是:

除了术语(错误与异常)和语法(do-catch,而不是 try-catch ,尝试在方法调用之前使用等)。

最佳答案

我发现了 3 个主要差异:

  1. 没有必要列出一个函数可以抛出的所有错误,只需要一个throws关键字。

  2. 使用这些错误并没有明显的减速,而 Java 和其他语言需要构造一个 Exception 对象并展开堆栈。在 Swift 中,throws 关键字可以被视为返回一个 Either 对象的函数,其中一个是原始返回类型,另一个是 ErrorType 值。

  3. 在 Swift 中,所有错误都需要处理或声明为抛出,不可能从未声明抛出错误的方法中获取错误。 (在 Java 术语中,所有错误都是“已检查的异常”)

关于swift - Swift 2.0 do-try-catch 和常规 Java/C#/C++ 异常有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740997/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com