快速错误处理:范围

时间:2016-02-19 10:04:50

标签: error-handling scope swift2

范围对于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()
}

或者只是风格问题?

1 个答案:

答案 0 :(得分:1)

规则:

如果发生错误,则跳过该特定try语句后的所有内容,并执行相同作用域中的下一个catch块。

使用一个或多个do - catch块的问题取决于在出现错误时是否还有代码要执行的情况。

  • 在第一个示例中f2() - 如果f5()失败,则永远无法联系到f1()
  • 在第二个示例中,执行所有功能。