审计日志功能要把记录值记录数据库,并根据model对象字段上Colum注解的name属性记录字段的注释。代码中在获取这个name注释时候,直接获取注解并获取name属性,当字段没注解就会有指针异常,在catch异常后,就认为没有设置注释,就设置为空。在印象中这样把异常当作业务逻辑处理的效率很低,百度也是有说明这点,然后就进行试验。
俩个方法:接收字符串,如果为空返回0,不为空返回字符串长度,
一个用异常处理:
try{
return s.length();
}catch(Exception){
return 0
}
一个不用异常
if(s==null){
return 0;
}else{
return s.length
}
测试结果
执行次数 | 用异常 | 不用异常 |
---|---|---|
一千万次 | 274586 | 8 |
一百万次 | 28665 | 3 |
十万次 | 2936 | 3 |
一万次 | 308 | 1 |
一千次 | 16 | 0 |
可以看出用异常的执行效率随着次数指数级增长,不用异常的效率比用异常效率快多了,所以在义务逻辑处理是尽量不要用异常。。