2013-09-01 32 views
3

我有我的程序工作和所有完成(Java)。這是一個簡短而容易的面試工作。我通過拋出自定義異常來處理諸如不正確的輸入格式之類的東西。這是做這件事的最好方法還是我應該只做一個印刷聲明?我應該在程序中拋出異常還是打印出錯誤語句?

+0

取決於如果格式不正確會發生什麼情況。應該處理嗎?或者你應該永遠不會得到格式不正確的輸入? –

+0

用戶提供一個包含輸入的文件。輸入應該是一定格式的所有#(即2個數字,然後是1個數字等)。我期待他們用文件中的字母或不正確的格式來測試程序。我檢查了一下,我想讓程序結束。這是否回答你的問題? – Smipims

+0

我們確實需要更多信息。如果您正在編寫用戶界面,則應該正確格式化任何錯誤,以便非技術用戶能夠理解他做錯了什麼。 –

回答

4

例外只有在它們將由其他代碼處理時纔有用。

如果你正在編寫一個可重用的庫,你應該通過任何方式拋出異常。
沒有比調用第三方庫更令人沮喪的事情,它將錯誤記錄到控制檯,而不是告訴你的代碼。

但是,如果您正在編寫獨立實用程序,打印友好的錯誤消息比醜陋的堆棧跟蹤更好。

最靈活的方法是編寫引發異常的可重用代碼,然後在打印友好消息的main()(或獨立部分的其他地方)中添加catch塊。

+0

我已經給了我所有的InputExceptions漂亮的錯誤消息,所以我只是將我的短主塊封裝在try/catch中並打印出e.getMessage()。 – Smipims

1
  • 如果處理格式不正確的內聯代碼可讀?如果是的話 - 很好,如果沒有 - 拋出一個異常,並在其他地方處理它
  • 你能夠在解析它的地方正確處理不正確的格式,或者一些更通用的方法/類/模塊實際上調用你的例程,應該決定做什麼?如果後者是這種情況 - >拋出異常

一般情況下 - 這取決於。如果你能處理這種「內聯」的特殊情況 - 你可以做到這一點(確保它是可讀的)。如果沒有 - 拋出異常。

1

這是exception best practices的一個很好的參考。你應該確保你正在關注這些。

在您的特定情況下(基於您提供的詳細信息),用戶可以上傳/選擇具有不良數據的文件。您的程序應該通過捕獲任何基本的Java運行時問題並向用戶返回信息(而不是「線程中的異常...」,但對用戶更易讀)來處理該問題。如果您正在檢查這些字母字符,那麼您應該在不拋出異常的情況下處理該錯誤(對用戶有錯誤) - 除非這確實是您想要的行爲。

0

異常是因爲程序無法正常工作的原因。

當你從j2se發展到j2ee時,異常會變得更加複雜和增加。

對於一個獨立的應用程序

  1. 如果您的應用程序僅僅是一個極其簡單的計算器那麼您可能就完全忘記了異常,因爲用戶輸入將被過濾,少數例外之一將是除零
  2. 如果你的應用程序是一個簡單的實用工具說屏幕捕獲,那麼如果你的文件不能保存(例外在文件I/O),那麼你所需要做的就是簡單地終止你的任務,並說一些錯誤消息給用戶。
  3. 例如2的先進的項目,您需要將圖像保存在溫度,並進行文件的保存,一旦問題得到糾正

對於邁上了一個企業和分佈式應用 這裏交易(涉及相關活動)。這裏還需要一個簡單的消息給用戶,時間爲,並且還處理(需要更改相關事務)異常!

  1. 如果應用程序是分佈在許多國家,然後一個牽引例外需要在另一個國家另一個服務器改變,這要求使用JMS API(消息中的應用程序發送)

  2. 一個有些事情任選加入
  3. JPA(java persistence api)在異常事件中隱式回滾數據庫,併爲相關事務提供設施。不過還是回滾隻影響數據庫,而不是實例變量(對象的值)

,並在任何時候,你不希望用戶閱讀您的確切堆棧跟蹤的行號說錯誤.. ...

相關問題