java反射catch不到的异常

先看上面一张图。我们在代码中t对有可能抛异常的地方会用try。。。catch包裹起来捕获异常再做处理,此前笔者就遇到一个头疼的问题,工具类代码中利用反射处理一些问题,也用try...catch捕捉可能出现的异常,代码在本地的eclipse中运行正常,但是到了测试环境就莫名其妙中断了,日志也是莫名其妙的就没打了,前面的日志都打了,然后页面上(页面调过来的)直接显示500错误。整个后台服务是起来的。没有日志没有捕获到异常,后面代码也没有执行,很奇怪,然后一顿操作各种jvm参数gc线程占用cpu时间等都去查看,因为怕是线程堵塞超时然后请求中断返回了,还有很多其他方面的分析,后面才在页面上返回的信息中找到了错误堆栈。提示一个反射方法找不到,原来是本地的jdk版本和测试环境的jdk版本不一致,本地的版本高些。一些反射相关的方法在测试环境的jdk中没有。好了,错误解决了,但是一个疑问是为什么没有捕捉到这个异常,后面看了这个图才意识到问题,我们一般catch()最大的异常都是Exception,如try{...}catch(Exception e){},但是可能抛出的问题不是个异常,是个Error。Error不属于Exception。那么我们可以把catch()这个里面改为最顶层,catch(Throwable e){},这样就进入异常情况下的处理代码了。笔者这次的异常是   nested exception is java.lang.NoSuchMethodError。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值