You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用自定义工厂接口时catchThrowable无法捕获异常问题咨询

问题产生原因

你调用catchThrowable时的代码执行顺序出错:

  • factory.create(testVar1, null, testVar3)会在传入catchThrowable之前就直接执行,此时构造方法抛出的IllegalArgumentException还没进入catchThrowable的异常捕获逻辑,就直接终止了程序。你写的强转操作是对factory.create的执行结果做强转,而不是把构造调用封装成待执行的ThrowingCallable实例。
  • 对比你第一种正常的写法:() -> new SomeClass(testVar1, null, testVar2)是把构造调用封装成了一个待执行的lambda函数(即符合ThrowingCallable签名的实例),传给catchThrowable后由其内部执行该lambda时才会触发构造调用,异常自然可以被正常捕获。

修复方案

你只需要把factory.create的调用逻辑也封装到lambda中传入catchThrowable即可,不需要额外强转:

catchThrowable(() -> factory.create(testVar1, null, testVar3));

内容的提问来源于stack exchange,提问作者Farrukh Nabiyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 11:54:04