相关疑难解决方法(0)

为什么'抛出'在Swift中不安全?

throws关键字是对Swift最大的误解.考虑以下代码:

func myUsefulFunction() throws
Run Code Online (Sandbox Code Playgroud)

我们无法真正理解它会抛出什么样的错误.我们唯一知道的是它可能会引发一些错误.了解错误可能的唯一方法是查看文档或在运行时检查错误.

但这不是针对斯威夫特的本性吗?Swift具有强大的泛型和类型系统,可以使代码具有表现力,但感觉就好像throws完全相反,因为您无法从查看函数签名中获得有关错误的任何信息.

为什么会这样?或者我错过了重要的事情并误解了这个概念?

try-catch throw swift

46
推荐指数
2
解决办法
3305
查看次数

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

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

Apple传统上强调使用NSError而不是抛出NSException for runtime errors(与程序员错误相比),因为NSException堆栈展开可能会导致内存泄漏,默认的ObjC编译器设置.

然而,现在他们已经设计出一些与传统异常非常相似的东西.我的问题是:

除了命名法(错误与异常)和语法(do-catch,而不是try-catch,尝试在方法调用之前使用等)之外,Swift 2.0错误处理和传统异常处理之间是否存在任何真正的差异.

error-handling runtime-error swift swift2

9
推荐指数
1
解决办法
1666
查看次数

标签 统计

swift ×2

error-handling ×1

runtime-error ×1

swift2 ×1

throw ×1

try-catch ×1