当前位置: 首页 > 面试题库 >

为什么catch块给出了一个错误,并且变量未在Java中初始化

商鸿哲
2023-03-14
问题内容

这是我编写的代码。

int num;
try {
    num=100;
    DoSomething();
    System.out.println(num);
} catch(Exception e) {
    DoSomething1();
} finally{
    DoSomething2();
}
System.out.println(num); // Error Line

我提到的错误行出现错误“本地变量num可能尚未初始化”。卸下挡块时,错误消失了。怎么了 我做错什么了吗?


问题答案:

如果您的try块中引发了异常,则该变量num可能确实尚未初始化。如果包含该catch块,那么无论执行什么都可以继续到错误行,因此编译器将报告您指出的错误。

如果删除该catch块,则只有在没有异常的情况下,执行才会到达“错误行”,在这种情况下,变量将在内初始化try

(我假设您已经知道在使用局部变量之前需要对它们进行初始化,并且专注于您在代码catch块中注意到的行为…)



 类似资料:
  • 问题内容: 我的Java程序中出现以下错误: Java变量未初始化错误…错误:变量nam和r未初始化位置类子级 但是并且已经初始化,但是我仍然遇到相同的错误。 问题答案: 不要获取 默认值 ,应在使用它们之前对其进行初始化,并使用main中的默认值进行初始化,这样就可以了。 顺便说一句,考虑为您的类和变量命名是有意义的。

  • 问题内容: 我正在努力理解为什么我在使用Swift的iOS项目中遇到此编译器错误。如果我创建以下类: 我在“初始化前使用了变量’self.c’” 这一行上收到编译器错误。 起初我以为这是因为编译器无法验证该方法是否无法访问,但是后来我尝试将init方法混入一点: 这次的错误是“在初始化之前使用了变量’self.b’”(在同一行上)。这表明编译器 是 能够检查其性能的方法访问,所以据我可以看到应该有

  • 问题内容: 使用开关块时遇到“未初始化变量”错误。 这是我的代码: 错误: 据我所知,当您尝试访问一个尚未初始化的变量时会发生此错误,但是当我在switch块中为其赋值时,是否没有初始化它? 同样,即使月份是编译时常量,我仍然会收到相同的错误: 问题答案: 如果不是,则执行路径中没有在引用之前初始化的语句。即使is ,编译器也不会假定该变量保留其值。 在JLS,第16章,关于“明确赋值”的谈判,并

  • 问题内容: 当我尝试编译时: 我得到这些错误: 在我看来,我在方法的顶部初始化了它们。怎么了 问题答案: 你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值: 因为未初始化变量,但在循环中增加了变量(例如),因此会收到错误消息。 Java原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值

  • 我有以下Java代码: 但是,当我运行它时,它会抛出以下错误: 我在do之前初始化了变量。while 循环,并在 try. 中设置值。捕获循环。似乎尚未设置该变量。抱歉,如果这是一个相当基本的问题,但我似乎无法弄清楚。

  • 我在这里看到过类似的问题,如果这看起来像是重复的,我很抱歉,但是类似问题的答案对我没有帮助。所以我有一个方法,它是类的一部分。这里是: 错误表明变量min可能尚未初始化。我不明白这怎么可能是真的。我觉得变量不可能不在for循环之外初始化。请帮忙。谢谢