似乎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,在方法调用之前使用的尝试等)有什么真正的区别吗?
发布于 2015-06-09 21:50:40
我发现有三大不同之处:
throws
关键字。Exception
对象并展开堆栈。在Swift中,可以将throws
关键字视为返回Either
-object的函数,其中一个是原始返回类型,另一个是ErrorType
值。https://stackoverflow.com/questions/30740997
复制相似问题