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
添加回答
舉報