簡體   English   中英

處理錯誤的最佳方法

[英]Best way to handle errors

我希望你們能在這一方面幫助我:如何處理錯誤以及返回什么? 在大多數情況下,我要做的是使我的函數/方法返回兩個可能的值。 如果成功,則為預期值;如果失敗,則為FALSE。 這樣我可以使用:

if(function()) { ... } else { ... }

我不喜歡使用異常,因為通常它們會打印某些內容並中斷應用程序的正常運行。 當然,我可以使他們返回一些信息並顯示有關該錯誤的警報。 但這工作太多了。 而且我不喜歡口袋妖怪那么多,試圖抓住所有人。 (Awsum主題,順便說一句)

我擔心的另一件事是編寫“錯誤處理”驅動的代碼。 眾所周知,用戶幾乎可以做任何事情來導致意外情況,並且對代碼期望這些錯誤太累人並且坦率地說,這使我感到偏執。 XD

對於任何英文拼寫錯誤,我深表歉意(我不經常寫)。 感謝您閱讀此問題。 :d

PS:我閱讀了有關防御性編程和其他問題的信息,但它們並不能完全回答我的疑問。

也許您不會發現我的答案有用,因為我不是php開發人員,無論如何我都會嘗試給您一些常見的提示,因為錯誤處理辯論在任何編程語言中都是很常見的。

1)首先嘗試避免實際需要進行錯誤處理。 這確實意味着嘗試以盡可能少的錯誤條件進行編碼。 一個簡單的例子:常識是,嘗試清除一個空集合不應引發錯誤。

2)區分什么是受支持的故障,而不是不受支持的故障。 受支持的故障是您實際上希望作為程序邏輯的一部分進行跟蹤和處理的錯誤條件。 不支持的故障將是錯誤條件,實際上是代碼錯誤。 例如:您正在嘗試在地圖中查找元素,並且程序邏輯中的特定元素應該在其中。 沒有必要添加代碼來測試元素是否存在,如果沒有則引發錯誤:您假設它在那里。

在理解了這兩點之后,我相信您一定會理解為什么異常對於生成更簡潔高效的代碼如此有用。 訣竅是:使您的代碼盡可能少地引發異常(再次:不同的受支持和不受支持的錯誤條件,以選擇實際需要哪些異常),並僅在應用程序用戶與之交互的最外部范圍內捕獲它們和1)應該被警告,2)應該決定要做什么。 在大多數情況下,以編程方式在沒有用戶交互的情況下捕獲異常是一件壞事,因為它使開發人員認為捕獲異常是有效的,就像有條件地做一些事情(if-then-else)時(如果不是)則出現錯誤情況一樣案件。 除非引發異常,否則異常不會對您的應用程序造成任何開銷。

您是否嘗試過使用PHP的錯誤記錄工具? http://php.net/manual/en/book.errorfunc.php

然后,您可以使用error_log()之類的東西將自定義錯誤發布到所需的任何日志文件中。

您應該考慮使用Exceptions 如果您不願意,它們不會打印任何內容。 至少這樣可以更好地分離您的實際代碼和錯誤處理。

沒錯,讓函數返回值或在錯誤時返回false並不是最好的樣式(是的,我知道這可能做了很多事情)。

如果您想了解有關良好編碼實踐的更多信息,建議閱讀Robert Martin的Clean Code

暫無
暫無

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

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