2013-10-11 91 views
-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+"\""); 
} 
+0

因爲send可以拋出一個異常,所以只要有什麼不知道的事情發生,java只是要求你將發送調用包裝在'try ... Catch ...'中,這樣如果有什麼不知道的事情發生,那麼你有代碼來處理它。它建議的另一種方法是告訴被調用者你的函數,你不會處理由發送拋出的異常,並且他們必須這樣做。 – Skeen

+0

如果你沒有任何合理的做法,在第一個片段中,如果發送函數失敗,考慮你的被調用者是否可以做某件事,否則簡單地將它包裝在'try ... catch ...'構造中,如你最後的片段。 – Skeen

回答

-1

send基本上方法是拋出異常。你寫的send方法拋出某種異常。因此,您需要調用send方法來捕獲該異常或拋出異常傳播。

嘗試這樣做會解決您的錯誤。

+0

謝謝,該命令需要在try,catch語句中。出於某種原因,它無法找到郵件驗證器發送郵件,所以我必須找出一個。 – Willixel

相關問題