Java面试问题之四
谈谈Java异常处理机制对程序性能的影响。
一般来说,在Java程序中使用try...catch语句不会对程序的性能造成非常大的影响。仅仅当异常发生时,Java虚拟机需要执行额外的操作来定位处理异常的代码块,这时才会对程序性能造成负面的影响。如果抛出异常的代码块和捕获异常的代码块位于同一个方法中,对性能的影响就会相对比较小一些;如果Java虚拟机必须搜索方法调用栈来寻找异常处理的代码块,此时对程序的性能影响就比较大了。尤其是当异常处理代码块位于调用栈的底部时,Java虚拟机定位异常处理代码块就需要大量的工作。
因此,我们必须杜绝使用异常处理机制来控制程序的正常流程,而应该保证仅仅在程序可能出现异常的地方使用try...catch语句。此外,我们在编写代码的时候需要认真考虑异常处理代码块所处的层次,如果当前的方法有能力处理这个异常,则尽量在方法内部给出异常处理的代码块,不要把本应该可以处理的异常抛出给调用者来处理,以保证异常处理对程序性能的影响降到最低程度。这也是编写高质量代码的良好习惯。