首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SWIFT2.0做尝试捕获和常规Java/C#/C++异常有什么区别?

SWIFT2.0做尝试捕获和常规Java/C#/C++异常有什么区别?
EN

Stack Overflow用户
提问于 2015-06-09 19:21:31
回答 1查看 1.9K关注 0票数 9

似乎SWIFT2.0已经从传统的ObjC (NSError返回)和SWIFT1.X(成功/失败选项)的运行时错误处理约定转变为类似于Java/C#/C++/等语言中的异常处理。

苹果传统上存在NSException for runtime errors (vs程序员错误),因为NSException堆栈的解压可能会导致默认ObjC编译器设置的内存泄漏。

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

SWIFT2.0错误处理与传统的异常处理除了命名(error vs exception)和语法(do-catch,而不是try-catch,在方法调用之前使用的尝试等)有什么真正的区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-09 21:50:40

我发现有三大不同之处:

  1. 不需要列出函数可以抛出的所有错误,只需要一个throws关键字。
  2. 在使用这些错误时,不会出现明显的减速,而Java和其他语言需要构造Exception对象并展开堆栈。在Swift中,可以将throws关键字视为返回Either-object的函数,其中一个是原始返回类型,另一个是ErrorType值。
  3. 在Swift中,所有错误都需要被处理或声明为被抛出,不可能从一个方法中得到一个错误,该方法不声明它正在抛出一个错误。(用Java术语来说,所有错误都是“检查异常”)
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30740997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档