public class testdemo {
private static final String name;
static {
name = "string";
try {
// name="string";
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println(name);
}
}
先看上述代码,是可以直接运行无异常的,但习惯的是将try...catch...范围扩大,进而将name="string"也写入try中
但编译器就会认为这段代码会发生异常,从而没有将name进行赋值,会提示name需要初始化,这是一个坑