gpt4 book ai didi

ios - Swift 中的错误处理

转载 作者:行者123 更新时间:2023-11-29 02:25:26 25 4
gpt4 key购买 nike

下面是我写的一些代码:

func Begin(input: String) -> Double {
let inputs = (input as NSString).lowercaseString
var smth = AnalyzeInput(input: inputs)
return smth.findOutput()
}

此代码的第 3 行(“smth”声明)开始了一系列代码,在许多情况下,这些代码可能会抛出某种错误(通常是创建子字符串时的索引越界错误)。因为这段代码在 15 个不同的文件中大约有 5,000 行,并且手动处理每个异常都会花费很长时间,所以我非常希望不必手动处理这些异常。

我知道 Swift 中没有 try/catch/finally 结构,但有什么地方可以模仿该功能吗?还是我只是把自己挖进了一个大洞?

最佳答案

如果您在不是灾难性错误的情况下抛出异常(即您预计很快就会崩溃),那么您就给自己挖了一个坑。 Cocoa 不使用异常来进行一般错误处理。它将它们用于真正特殊的情况。避免索引越界取决于您。

参见 Error Handling Programming Guide for Cocoa有关 Cocoa 错误处理的文档。您的函数可能看起来像这样:

func begin(input: String, error: NSErrorPtr) -> Double? {
let inputs = input.lowercaseString // "as NSString" is no longer needed
let smth = AnalyzeInput(input: inputs, error: NSErrorPtr) // pass along your error pointer
return smth?.findOutput() // Use ?. to return nil if smth is nil, or Double? otherwise
}

我们中的一些人正在探索更实用的方法,例如 Result目的。这些都还处于试验阶段,但原则上应该是这样的:

func begin(input: String) -> Result<Double, NSError> {
let inputs = input.lowercaseString
let smth = AnalyzeInput(input: inputs) // AnalyzeInput would return a Result
return smth.map { $0.findOutput() } // And then we map it to the final result
}

关于ios - Swift 中的错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27611433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com