范围对于swift 2中的错误处理应该有多大? 我理解错误处理(我认为),但我也怀疑实现细节。如果我有一个调用抛出函数的函数,我应该如何处理我的do-try-catch的范围?
我应该这样做:
func doLotsOfErrorProneWork()
{
//everything in scope
do {
try f1()
f2()
f3()
try f4()
f5()
} catch {}
}
或者这个:
func doLotsOfErrorProneWork()
{
//smallest scope possible
do {
try f1()
} catch {}
f2()
f3()
do {
try f4()
} catch {}
f5()
}
它有所作为吗?有什么不同? 一个区别可能是f1和f4之间抛出的错误差异。 但是假设只有一个投掷功能。
func doLotsOfErrorProneWork()
{
//everything in scope
do {
try f1()
f2()
} catch {}
}
或者
func doLotsOfErrorProneWork()
{
//smallest scope possible
do {
try f1()
} catch {}
f2()
}
或者只是风格问题?
答案 0 :(得分:1)
规则:
如果发生错误,则跳过该特定try
语句后的所有内容,并执行相同作用域中的下一个catch块。
使用一个或多个do - catch
块的问题取决于在出现错误时是否还有代码要执行的情况。
f2()
- 如果f5()
失败,则永远无法联系到f1()
。