Java 构造函数调用被忽略/没有抛出错误

标签 java constructor try-catch

如果这已在其他地方涵盖,我提前道歉,但所涉及的模糊/通用术语意味着我发现了很多不相关的点击,没有任何帮助。由于我的项目相当大,我认为提供 M(N)WE 对我来说不合理,所以我正在寻找关于还有什么要检查的想法。这是代码块:

try {
    myClassObject = new MyClass(string1, string2, string3, otherClassObject); (1)
    System.out.println("Test"); (2)
} catch (Exception e){ 
    System.out.println(e.getMessage() + " " + e.getStackTrace()); (3)
}

我的构造函数 (1) 从未被调用。然而,(2) 和 (3) 都没有被调用(即测试字符串永远不会打印,也不会打印异常)。根据我对 try-catch block 的理解,这应该是不可能的。

我使用 Eclipse 的 Debug模式并且能够跨过那条线。所有 4 个对象都已定义并且可以很好地打印(因此这不是访问问题)。在 Debug模式下查看时,所有 4 个对象都有其预期值。然而, Debug模式从 (1) 跳到我的代码的其余部分,从不击中 (2) 或 (3)。永远不会到达 MyClass 的构造函数中放置的调试点。

我可以调用 MyClass 的默认构造函数来代替 4 参数构造函数,它的行为符合预期。然后,我可以在 (2) 之后复制/粘贴 4 参数构造函数的内容,并正确设置所有 4 个参数,并根据需要创建对象。显然这是一个可行的解决方法,但我找不到 4 参数构造函数失败的原因。

简而言之,我不知道这怎么可能,更不用说如何阻止它发生了。

编辑:我已经对代码执行了多次清理 -> 构建 -> 调试,所以我相当有信心这不是 .class 问题。以防万一我删除了 .bin 并刷新,但没有任何效果。

最佳答案

会不会有一个没有实现 Throwable 的错误,因此无法被捕获?你在构造函数中做什么?例如 ChuckNorris 异常 :) Uncatchable ChuckNorrisException

关于Java 构造函数调用被忽略/没有抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15750398/

相关文章:

java - 启用地铁/地铁日志记录

java - 类型 : GWT Compilation Error 没有可用的源代码

java - 从具有 Java 构造函数抛出异常的类进行子类化

c++ - catch-all-rethrow 与根本没有 try-catch block 有什么不同吗?

swift - 在采用转义闭包的函数中抛出错误

java - 在 Java 中使用 Scala Function2 对象

java - 删除 IntelliJ 中不必要的 @SuppressWarnings/noinspection

javascript - 在 "constructor"中设置 "prototype"属性的优点

c++ - 使用构造函数参数初始化结构数组

Javascript:IF block 或 TRY/CATCH 哪个更有效?