多层次回归的恐慌

时间:2012-11-30 17:52:39

标签: go

有没有更好的方法从长序列的递归函数调用返回? 我目前对这样的标记值感到恐慌:

type exitNow int
...
panic(exitnow(0))

一次返回多个级别。在根函数中,对恢复的调用执行一般错误处理(将恐慌转为错误)并将exitNow作为特殊情况处理。

这很好,我只想知道是否有更好的方法。

我已经将bool返回值用于相关目的,但是使用另一个则会很痛苦。 (每次调用每个函数都需要一个if语句)

如果它有助于任何这是一个反复的正确解析器的实现的一部分。

1 个答案:

答案 0 :(得分:3)

我在解析器中自己使用这种方法。不过我不会对整数值感到恐慌。我使用实际的当前错误作为恐慌消息。执行recover()的顶级调用只会附加一些文件/行/列信息,然后将其作为常规error返回。

这个方法,只是从所有函数返回错误是在Go中执行此操作的唯一方法。恐慌方法对于解析器案例来说非常有效,因为它使得词法分析器规则实现(和读取)相当简单,因为到处都没有if err != nil { return }个散布的部分。