【发布时间】:2017-06-19 01:42:32
【问题描述】:
如何处理未明确抛出的方法或代码的错误?
将其包装为 do / catch 块会导致编译器警告:
"'catch' block is unreachable because no errors are thrown in 'do' block"
来自 C# / JAVA 背景,这至少可以说是一件奇怪的事情。作为一名开发人员,我应该能够在 do/catch 块中保护和包装任何代码块。仅仅因为一个方法没有明确地用“throw”标记并不意味着不会发生错误。
【问题讨论】:
-
如果没有明确的
throw,那么就没有什么可捕获的了。如果没有任何东西被抛出,do/catch有什么意义? -
好吧,仅仅因为一个方法没有明确地“抛出”并不意味着不会发生运行时错误:)
-
这意味着没有可捕获的错误。您无法捕获无法捕获的运行时错误。
-
Java 有无法捕获的异常(错误)。斯威夫特也不例外。
-
@AlexVPerl 这不是一个糟糕的设计决定——运行时的致命错误不应该被捕获,因为它们表示程序员错误(例如访问超出范围的索引集合或强制展开 nil)。你不应该发现这样的错误,你应该修复你的代码,这样它们就不会首先发生。
标签: swift error-handling do-catch