Juri Pakaste:今天才知道:用Swift打字
作者发现了 Swift 中 typed throws 的一个宝贵特性,它简化了错误处理。起初,作者认为 typed throws 对特定错误类型非常有用,但遇到了一个问题:复杂的代码块会导致 Swift 将错误类型泛化为"any Error"。这意味着其"catch"块无法再精确地类型化错误,从而导致编译问题。作者的变通方案是使用"catch let error as MyError",但这需要一个不可达的 catch-all 块,使得错误处理变得不完整且令人沮丧。关键的发现是"do throws(MyError)"语法。通过在"do"块中显式声明预期的错误类型,Swift 编译器能够保持精确的错误类型。这一优雅的解决方案防止了编译器产生混淆,确保"catch"块能够正确处理指定的错误类型。该特性提升了在 Swift 中使用 typed throws 时错误处理的清晰度和完整性。作者在原始增强提案中忽略了这一细节,是一个重大的疏漏。如今,一切皆已类型正确,宛如独角兽与阳光般美好。