gpt4 book ai didi

nested - 如何在Swift 2.0中处理连续多次尝试

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

我有一段代码需要执行2条需要尝试的语句。嵌套尝试是否更好,并且每个尝试都有自己的做{} catch {}

 do { 
try thingOne()
do {
try thingTwo()
} catch let error as NSError {
//handle this specific error
}
} catch let error as NSError {
//handle the other specific error here
}

...或将try包裹在一个do块中并连续运行?
do {

try thingOne()
try thingTwo()
} catch let error as NSError {
//do something with this error
}

第二种情况似乎比第一种情况更容易阅读,尽管如果其中任何一种抛出错误,那么 catch是否可以工作?

然后,我将需要区分抛出的不同错误,除非这些错误足够通用,否则可能无关紧要。浏览了Apple文档,没有发现任何相关信息。

最佳答案

我认为第二种方法更好

假设我有这两个功能

 func thingOne() throws{
print("Thing 1")
throw CustomError.Type1
}
func thingTwo() throws{
print("Thing 2")

throw CustomError.Type2

}
enum CustomError:ErrorType{
case Type1
case Type2
}

然后我会这样称呼它
   do {
try thingOne()
try thingTwo()
} catch CustomError.Type1 {
print("Error1")
} catch CustomError.Type2{
print("Error2")
} catch {
print("Not known\(error) ")
}

这将记录
Thing 1
Error1

如果 thingOne()没有引发错误,它将记录
Thing 1
Thing 2
Error2

关于nested - 如何在Swift 2.0中处理连续多次尝试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34147474/

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