[英]Should I throw an exception or print out an error statement in a program?
我的程序正在運行並且全部完成(java)。 這是一個簡短而簡單的求職面試程序。 我通過拋出自定義異常來處理諸如不正確的輸入格式之類的事情。 這是最好的方法還是我應該做一個打印聲明?
只有在其他代碼處理異常時,異常才有用。
如果您正在編寫可重用的庫,那么您應該拋出異常。
沒有什么比調用第三方庫將記錄錯誤記錄到控制台而不是告訴您的代碼更令人沮喪的了。
但是,如果您正在編寫一個獨立的實用程序,那么打印友好的錯誤消息比使用難看的堆棧跟蹤更好。
最靈活的方法是編寫拋出異常的可重用代碼,然后在main()
(或獨立部分的其他位置main()
添加catch
塊,以打印友好消息。
一般來說 - 這取決於。 如果你能處理這種“內聯”的特殊情況 - 你可以這樣做(確保它是可讀的)。 如果不是 - 拋出異常。
這是關於異常最佳實踐的一個很好的參考。 你應該確保你遵循這些。
在您的特定情況下(根據您提供的詳細信息),用戶可以上傳/選擇包含錯誤數據的文件。 您的程序應該通過捕獲任何基本的Java運行時問題並將信息返回給用戶來處理(不是“線程中的異常......”,而是對用戶更具可讀性的東西)。 如果你正在檢查這些字母字符,那么你應該只處理它(給用戶一個錯誤)而不拋出異常 - 除非這確實是你想要的行為。
當程序無法以正常的方式工作時,會導致異常。
當你從j2se演變為j2ee時,異常變得更復雜並且數量增加。
對於獨立應用程序
對於企業擴展和分布式應用程序此處涉及事務(相互關聯的活動)。 這里有時也需要向用戶發送一條簡單的消息, 並處理(需要對相關事務進行更改)異常!
如果應用程序在許多國家/地區分發,那么一個牽引力中的異常需要在另一個國家/地區的另一個服務器中進行更改,這需要可選地合並使用JMS API的某些內容(在應用程序內部發送消息)
JPA(java持久性api)在異常事件時隱式回滾數據庫,並為相互關聯的事務提供了這樣做的工具。 但仍然回滾只影響數據庫而不影響實例變量(對象值)
並且在任何時候您都不希望用戶讀取您在行號中顯示錯誤的確切堆棧跟蹤.....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.