一次尝试失败后继续尝试,迅速尝试

时间:2018-08-09 12:44:30

标签: ios swift try-catch

我有一个如下的try块。当一次尝试失败时,它会捕获块,但我也希望它也运行第二和第三次尝试块。一种解决方案是将所有尝试放在不同的try catch块中,但我想知道是否有更好的解决方案?

do{
    try AppURLCache.instance.fetchList()
    try ParamCache.instance.fetchList()
    try AnalyticsManager.instance.initGoogleAnalyticsManager()
} catch let error as ServiceError {
    print(error.message)
} catch let error{
    print(error.localizedDescription)
}

可能的解决方案:

do{
    try AppURLCache.instance.fetchList()
} catch let error as ServiceError {
    print(error.message)
} catch let error{
    print(error.localizedDescription)
}
do{
    try ParamCache.instance.fetchList()
} catch let error as ServiceError {
    print(error.message)
} catch let error{
    print(error.localizedDescription)
}
do{
    try AnalyticsManager.instance.initGoogleAnalyticsManager()
} catch let error as ServiceError {
    print(error.message)
} catch let error{
    print(error.localizedDescription)
}

2 个答案:

答案 0 :(得分:1)

您可以使用try?代替try

尝试?

如果我们使用try?关键字并引发错误,则通过将其变为可选值来处理该错误。这意味着不需要将throwing方法调用包装在do-catch语句中,这样就不会捕获错误。

try? AppURLCache.instance.fetchList()
try? ParamCache.instance.fetchList()
try? AnalyticsManager.instance.initGoogleAnalyticsManager()

答案 1 :(得分:1)

一旦您获得异常,它将捕获到块,您无法更改它。如果您使用try ?,则可以执行此操作,但是将无法捕获将破坏目标的异常。