关于异常及性能的一些想法
大家经常在讨论业务中如何使用异常,异常的性能如何等。
?
第一个问题 : uncheck 异常,check 异常?异常使用的原则
?
1、如果调用者有责任在调用前检查必要状态,但没检查,就抛出uncheck异常
???
???? 一般要提供给调用者判断方法,如果他不调用,则是一个编程错误,就应该使用uncheck异常
????
????
@Override public Throwable fillInStackTrace() { return this; }?
?
我做了一个测试,并发线程10个,每个线程生成10000000个普通对象,一般异常,和覆写了不带同步的fillInStackTrace()的异常,时间是:
普通对象:??????????????????????????????????? ?89673 毫秒
一般异常:???????????????????????????????????? 568413 毫秒
覆写fillInStackTrace()异常:?????????? 40424 毫秒
很明显,覆写fillInStackTrace()异常 性能最高。
?