因此,我知道try / catch确实会增加一些开销,因此不是控制流程的好方法,但是这种开销来自何处,又有什么实际影响?
我不是语言实现方面的专家(因此请耐心等待),但是我认为最大的成本之一就是展开堆栈并将其存储以进行堆栈跟踪。我怀疑只有在抛出异常时才会发生这种情况(但我不知道),如果是这样,那么每次抛出异常时,这将是相当大的隐藏成本…因此,这不像您只是从一个地方跳下来在另一个代码中,发生了很多事情。
我不认为这是一个问题,只要您对异常行为使用异常(这样就不会在程序中使用通常的预期路径)。