当前位置: 首页 > 知识库问答 >
问题:

Java构造函数调用被忽略/未引发错误

沃驰
2023-03-14

如果其他地方也提到了这一点,我提前表示歉意,但涉及的模糊/常见术语意味着我发现了很多不相关的点击,但没有任何有用的内容。由于我的项目相当大,我认为我提供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块的理解,这应该是不可能的。

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

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

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

编辑:我表现得很干净-

共有1个答案

谈禄
2023-03-14

是否有一个错误不能实现可丢弃,因此无法捕获?你在构造器里做什么?例如ChuckNorris异常:)不可修补的ChuckNorriseException

 类似资料:
  • 问题内容: 我正在尝试创建对象Iset的实例。当人创建对象时,他们必须给出一个整数,该整数将是一个布尔数组的大小,该布尔数组将存储一组整数,例如1将是Iset [1] = true等。但是我一直使索引超出范围错误。程序的其余部分显然会忽略我在构造函数中设置的值,那么如何确保在我的所有方法中都使用构造函数中使用的值? 代码的第一部分: 问题答案: 让我们看看您的代码: 在构造函数中,您已经看到创建了

  • 问题内容: 构造函数何时被调用? 创建对象之前。 在对象创建期间。 创建对象之后。 问题答案: 分配对象内存,初始化具有初始值的字段变量,然后调用构造函数,但是其代码在对象超类的构造函数代码之后执行。

  • 为什么: 如果一个类不提供任何然后在编译时由编译器给出,但是如果一个类包含,那么默认构造函数不是由编译器提供。 我正在编译下面的代码。它给出了编译错误。 代码: 控制台错误: 当我只调用。工作正常。但是当您想使用参数化构造函数调用

  • 问题内容: 但是,当我删除WHERE时,查询会停止使用该键(即使我明确地强制使用该键也是如此) 有什么解决方法吗? 我意识到我在第二个示例中选择了整个表,但是为什么mysql突然决定它还是要忽略我的FORCE而不使用键?没有密钥,查询大约需要10分钟。 问题答案: FORCE有点用词不当。这是MySQL文档所说的(重点是我的): 您还可以使用FORCE INDEX,其作用与USE INDEX(in

  • 当我在代码中进行扫描后到达此部分时,我收到此错误: Project2_JoshuaLucas[,0,0,0x0,无效,布局=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=350,hei

  • 问题内容: 以下代码向我返回错误信息: 我不明白。我的代码中的构造函数是第一条语句。我究竟做错了什么? 问题答案: 构造函数名称必须与类名称相同,因此请将类名称更改为或将构造函数名称更改为。 示例 (请注意,在Java中通常第一个字母是大写字母) :