簡體   English   中英

我應該在程序中拋出異常還是打印錯誤語句?

[英]Should I throw an exception or print out an error statement in a program?

我的程序正在運行並且全部完成(java)。 這是一個簡短而簡單的求職面試程序。 我通過拋出自定義異常來處理諸如不正確的輸入格式之類的事情。 這是最好的方法還是我應該做一個打印聲明?

只有在其他代碼處理異常時,異常才有用。

如果您正在編寫可重用的庫,那么您應該拋出異常。
沒有什么比調用第三方庫將記錄錯誤記錄到控制台而不是告訴您的代碼更令人沮喪的了。

但是,如果您正在編寫一個獨立的實用程序,那么打印友好的錯誤消息比使用難看的堆棧跟蹤更好。

最靈活的方法是編寫拋出異常的可重用代碼,然后在main() (或獨立部分的其他位置main()添加catch塊,以打印友好消息。

  • 如果處理不正確的內聯格式是代碼可讀嗎? 如果是這樣 - 如果沒有 - 罰款 - 拋出異常並在其他地方處理它
  • 您是否能夠在解析它的地方正確處理不正確的格式,或者某些更通用的方法/類/模塊實際上是在調用您的例程並且應該決定該怎么做? 如果是后者 - >拋出異常

一般來說 - 這取決於。 如果你能處理這種“內聯”的特殊情況 - 你可以這樣做(確保它是可讀的)。 如果不是 - 拋出異常。

這是關於異常最佳實踐的一個很好的參考。 你應該確保你遵循這些。

在您的特定情況下(根據您提供的詳細信息),用戶可以上傳/選擇包含錯誤數據的文件。 您的程序應該通過捕獲任何基本的Java運行時問題並將信息返回給用戶來處理(不是“線程中的異常......”,而是對用戶更具可讀性的東西)。 如果你正在檢查這些字母字符,那么你應該只處理它(給用戶一個錯誤)而不拋出異常 - 除非這確實是你想要的行為。

當程序無法以正常的方式工作時,會導致異常。

當你從j2se演變為j2ee時,異常變得更復雜並且數量增加。

對於獨立應用程序

  1. 如果您的應用程序只是一個非常簡單的計算器,那么您可能只是完全忘記了異常,因為您的用戶輸入將被過濾,並且少數例外之一將被除以零
  2. 如果您的應用程序是一個簡單的實用工具,例如屏幕截圖,那么如果您的文件無法保存(文件i / o中的例外),那么您只需終止所有任務並向用戶說出一些錯誤消息。
  3. 對於示例2的高級項目,您需要將圖像保存在臨時文件中,並在問題得到糾正后執行文件保存

對於企業擴展和分布式應用程序此處涉及事務(相互關聯的活動)。 這里有時也需要向用戶發送一條簡單的消息, 並處理(需要對相關事務進行更改)異常!

  1. 如果應用程序在許多國家/地區分發,那么一個牽引力中的異常需要在另一個國家/地區的另一個服務器中進行更改,這需要可選地合並使用JMS API的某些內容(在應用程序內部發送消息)

  2. JPA(java持久性api)在異常事件時隱式回滾數據庫,並為相互關聯的事務提供了這樣做的工具。 但仍然回滾只影響數據庫而不影響實例變量(對象值)

並且在任何時候您都不希望用戶讀取您在行號中顯示錯誤的確切堆棧跟蹤.....

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM