gpt4 book ai didi

Java "blank final field may not have been initialized"方法异常抛出异常

转载 作者:太空狗 更新时间:2023-10-29 23:03:03 26 4
gpt4 key购买 nike

我有一些代码:

final int var1;    

if ( isSomethingTrue ) {

var1 = 123;

} else {
throwErrorMethod();
}

int var2 = var1;

throwErrorMethod 定义如下:

private void throwErrorMethod() throws Exception{

throw new Exception();

}

对于 var2 = var1 语句,我得到一个 blank final field may not have been initialized 编译错误。如果我内联该方法,编译就可以了!

  1. 编译器是否在调用的方法上看到throws Exception
  2. 为什么出现包含单词 may 的错误会停止编译?!?

最佳答案

  1. 不,编译器不确定throwErrorMethod 永远不会正常完成。规范中没有任何建议。不幸的是,没有办法表明方法永远不会正常返回。

  2. 它只是“可能”,因为存在不初始化变量的潜在执行路径。存在这样的执行路径被定义为错误。

您可能会发现 Eric Lippert 的这对博客文章 ( part 1 ; part 2 ) 很有趣。它是关于 C# 而不是 Java,但原理相同。

关于Java "blank final field may not have been initialized"方法异常抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5652772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com