-1
source\server\model\players\packets\Commands.java:51: error:
unreported exception Exception; must be caught or declared to be thrown
sender.send(Config.PHONE_NUMBER, "Test!");
^
這是它說錯誤的地方。這是我的命令。爲什麼我會得到「異常異常;必須被捕獲或聲明爲拋出」
if (playerCommand.equalsIgnoreCase("smstest")) {
SmsNotification sender = new SmsNotification(Config.GMAIL_USERNAME, Config.GMAIL_PASSWORD, SmsNotification.Carrier.ATT);
sender.send(Config.PHONE_NUMBER, "Test!");
}
現在我認爲它也可能在我的ShutDownHook中,因爲那是我的嘗試,catch語句。這也是這條線。
try {
SmsNotification sender = new SmsNotification(Config.GMAIL_USERNAME, Config.GMAIL_PASSWORD, SmsNotification.Carrier.ATT);
sender.send(Config.PHONE_NUMBER, "A fatal server error has occured!");
System.out.println("\tSuccesfully dispatched SMS notification!");
} catch (Exception e) {
System.out.println("\tFailed to dispatch SMS notification. \""+e+"\"");
}
因爲send可以拋出一個異常,所以只要有什麼不知道的事情發生,java只是要求你將發送調用包裝在'try ... Catch ...'中,這樣如果有什麼不知道的事情發生,那麼你有代碼來處理它。它建議的另一種方法是告訴被調用者你的函數,你不會處理由發送拋出的異常,並且他們必須這樣做。 – Skeen
如果你沒有任何合理的做法,在第一個片段中,如果發送函數失敗,考慮你的被調用者是否可以做某件事,否則簡單地將它包裝在'try ... catch ...'構造中,如你最後的片段。 – Skeen