Java到底能不能使用异常来控制流程?( 二 )

我们把抛异常的时候不去封装异常信息
/*** 测试异常耗时* 关闭堆栈 并且不打印*/@Testpublic void noPrintCloseStackTrace() {long start1 = System.currentTimeMillis();for (int i = 0; i < RUN_COUNT; i++) {Storey1.test();}long start2 = System.currentTimeMillis();for (int i = 0; i < RUN_COUNT; i++) {try {Storey1.testException();} catch (Exception e) {}}long end = System.currentTimeMillis();log.info("普通返回耗时:{},异常返回耗时:{}", start2 - start1, end - start1);}public static class Storey5 {public static String test() {return Integer.toString(count++);}public static String testException() {throw new CustomException(Integer.toString(count++), null, false, false);}}public static class CustomException extends RuntimeException {public CustomException(String message) {super(message);}public CustomException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);}}结果发现普通返回是31毫秒,而异常却要62毫秒,差距也没有想象中的大了 。差不多是2倍左右 。
15:54:26.984 [main] INFO com.alibaba.easytools.test.temp.exception.ExceptionTest - 普通返回耗时:31,异常返回耗时:62最终结果我们来看下最终对比结论
 
普通
异常
普通输出日志,异常输出堆栈
2137
75026
普通输出日志,异常仅输出日志
2053
4380
都不输出日志
【Java到底能不能使用异常来控制流程?】58
719


推荐阅读