码迷,mamicode.com
首页 > 其他好文 > 详细

使用return 和 throw 中断函数执行,性能对比,及优化

时间:2020-06-13 17:34:21      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:exception   turn   定义   web开发   exp   this   sage   time   runtime   

在javaweb开发过程中使用throw 自定义异常,配合全局异常捕获可以大大减少代码量,提升开发效率,在近期项目codereview中,

有小伙伴提出通过throw来中断效率不如直接retrun,之后查阅资料 ( https://stackoverflow.com/questions/36343209/which-part-of-throwing-an-exception-is-expensive ) ,发现主要是  Throwable 类中的  fillInStackTrace() 函数,影响性能,此函数的主要功能是,遍历调用堆栈并手机堆栈的类,方法名称,行号等, 对于实际项目使用中自定义异常往往不需要此类信息,比如参数校验的场景,只需将校验信息抛出即可,

所以在实际使用中,如果不需要堆栈信息可以重写  fillInStackTrace()  函数

 1 public class MyException extends RuntimeException {
 2 
 3     public MyException(String message) {
 4         super(message);
 5     }
 6 
 7     @Override
 8     public synchronized Throwable fillInStackTrace() {
 9         return this;
10     }
11 }

重写之后经过简单测试,发现性大幅所提升,但依旧没有直接retrun高效, 测试代码地址:   https://github.com/xiaodu9499/cnblogs_demo/tree/master/return_or_throw/ 

技术图片

 

使用return 和 throw 中断函数执行,性能对比,及优化

标签:exception   turn   定义   web开发   exp   this   sage   time   runtime   

原文地址:https://www.cnblogs.com/xiaodu9499/p/13117967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!