zl程序教程

您现在的位置是:首页 >  其它

当前栏目

e.fillInStackTrace()你用对了吗?

2023-06-13 09:15:36 时间
from luke

e.fillInStackTrace()的功能及适用场景

功能

e.fillInStackTrace()每次执行的时候,会清空原来异常跟踪栈内的trace信息。 然后以当前的调用位置做为代码第一次出错的位置来重新建立trace信息。

适用场景

造成异常的原因确定或不关注报错的细节,在排查问题时不需要知道是哪行代码出错了。 譬如,Http客户端的报错。在调用第三方API时,Http客户端从服务器读取数据时超时。 这种异常根据错误的message就可以确定异常原因

不适用场景

造成异常的原因很多,不容易确定,在排查问题时需要知道是哪行代码出错了。 eg:

示例:在记录日志时,e与e.fillInStackTrace()的区别

场景1:try catch后打印异常e

业务代码:

测试代码:

执行结果:

场景2:try catch后打印异常e.fillInStackTrace()

业务代码:

测试代码:

执行结果:

https://gitee.com/baidumap/top-tree/tree/master/src/test/java/com/tree/thrive/business/log/service

JDK源码分析

java.lang.Throwable.fillInStackTrace()

"熬最狠的夜,养最贵的生"触发的思考: 某个时间段有突发事件,倒排期,时间不够,只能早起晚睡加班加点来完成。这种不是常态,只会偶发

出现常态化熬夜的一些猜测:

  1. 晚上比较安静,可以专心。的确,大家都按照几千年进化的生物钟,休息了,可以打扰你的人的确少了。夜深人静嘛。需要反思的点:为什么只有你"晚上才以专心"
  2. 增加了工作时间。别人睡了,我还在工作,工作时间比别人高,一步快步步快。如果仍然能按时起床且能保持精力旺盛的话,是这样的。恭喜,天生赢家,精力旺盛程度高于正常人,可用于做自己喜欢事的时间比正常人多。如果不是,就问下自己,每天处于清醒状态的时间真的增加了吗?
  3. 晚上多工作一会,会比较兴奋。"白天游门走四方,黑夜点灯补裤裆"? 白天疲劳晚上精神这是典型的神经衰弱,如无精神、无疲劳、记忆力减退、困倦、睡眠障碍等情况下,压力大、神经性问题可能过于紧张,不注意休息、不注意正常休息等。也有可能存在心理原因导致失眠,是植物神经调节紊乱,睡觉前喝一杯纯牛奶,增加锻炼,劳逸结合一定要制定纪律,生活中避免压力过大造成失眠。

"熬最狠的夜,养最贵的生"。 "熬"的狠了,小米粥一不小心熬成黑炭,想要养回来,需要有个白娘子,然后来了"白娘子盗仙草"才可以吧。

"阿尔伯特·爱因斯坦的一个经典实践:同一个思维层次解决不了同一个思维层次的问题,你不能用造成问题的思维方式解决问题。"

如果出现没有增加的熬夜,可以往以下维度上考虑考虑,发散一下,看看对解决问题有没有帮助:

  1. 找到工作重心。规划好工作,分清主次、轻重。
  2. 提升与岗位匹配的工作技能,
  3. 培养工作意识这个sense。最后:老板要的是成效,不是加班。如果是"战术上的勤奋,战略上的懒惰",越做越忙,越忙越做,不小心搞成"一将无能,累死三军"的委屈就不好了。