3 回答
TA贡献1719条经验 获得超6个赞
System.exit(-1)
不保证您的程序会停止。如果您有某种关机挂钩,或者您正在进行流操作,则可以阻止它。因此,编译器会引发错误。
您可能希望让 逃逸当前图层。Exception
Config c;
try {
c = new Config();
} catch (final Exception e) {
System.err.println("Error while parsing/reading file: " + e.getMessage());
throw new YourCustomRuntimeException(e);
}
c.whatever();
TA贡献1809条经验 获得超8个赞
编译器不知道如果程序无法初始化,它将退出。只需将其余代码移动到 try 中即可。
public static void main (String[] args) {
try {
Config c = new Config();
final NetworkReporter np = new NetworkReporter(c.getValues().serverIP, c.getValues().serverPort, (short)(c.getValues().checkInterval * c.getValues().checksPerReport));
IdleChecker idleChecker = new IdleChecker(c.getValues().checkInterval, c.getValues().checksPerReport, c.getValues().idleSensitivity, new IdleChecker.reportFunction() {
public void report() {
np.report();
}
});
idleChecker.start();
} catch (Exception e) {
System.err.println("Error while parsing/reading file: " + e.getMessage());
System.exit(-1);
}
}
TA贡献1799条经验 获得超9个赞
“事实上 - 它将始终被初始化(因为如果无法初始化,程序将退出)。
编译器如何知道这一点?此外,如果它总是被初始化,那么为什么要费心使用a呢?你的逻辑有一个缺陷。try-catch
您可以将其余代码移动到块内。这样就行了。try
添加回答
举报