异常对性能不利。
1.抛出异常首先要创建一个新的对象。
2.Throwable接口的构造函数调用名为fillInStackTrace()的Native方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,VM就必须调整调用堆栈,因为在处理过 程中创建了一个新的对象。
因此,异常只能用于错误处理,不应该用来控制程序流程。
如果频度很高的抛出异常,性能下降是很巨大的,参见stackoverflow上的一篇文章
http://stackoverflow.com/questions/299068/how-slow-are-java-exceptions
http://java-performance.info/throwing-an-exception-in-java-is-very-slow/