我一直看到人们说异常是缓慢的,但我从来没有看到任何证据。因此,我不会询问是否存在异常,而是询问异常在幕后是如何工作的,这样我就可以决定何时使用它们,以及它们是否速度慢。
据我所知,异常与多次执行返回一样,只不过它在每次返回后都会检查是否需要执行另一次或停止。它如何检查何时停止返回?我猜有第二个堆栈保存异常的类型和堆栈位置,然后它返回,直到到达那里。我还猜测,这第二个堆栈唯一被触及的时间是在抛出和每次尝试/捕捉时。AFAICT 使用返回代码执行类似的行为将需要相同的时间。但这只是猜测,所以我想知道到底发生了什么。
异常到底是如何工作的?