為了有效地處理錯誤,必須了解可能發生的錯誤類型。讓我們先對您可能遇到的錯誤進行分類。
可能會發生各種類型的錯誤。然而,這些錯誤通常可以分為兩類:
讓我們將討論過的錯誤分為這些類別。
從具有明確狀態代碼的伺服器 API 收到的錯誤可以被視為預期錯誤,因為它們可以提前預測和解決。
例如未授權存取(401)或禁止存取(403)等錯誤,可根據情況進行適當處理。為每個狀態代碼定義更詳細的錯誤代碼以管理回應錯誤的應用程式邏輯也很常見。這些被稱為預期錯誤。
另一方面,500 範圍內的伺服器錯誤被歸類為 意外錯誤,因為它們是不可預測的。伺服器因任何原因無法回應的情況隨時可能發生。此外,由於使用者的網路環境或瀏覽器環境而可能出現的錯誤難以預測,因此被歸類為意外錯誤。
錯誤還可以根據與使用者的互動進行分類,而不僅僅是環境。對錯誤進行分類的一種方法是考慮使用者是否可以對錯誤採取措施。以下是此分類的標準:
例如,身分驗證或授權錯誤就屬於此類。未登入的使用者可能會遇到 401 狀態錯誤。在這種情況下,您可以提供登入畫面或顯示一則訊息,指示需要登入。
如果使用者沒有存取特定螢幕的權限,您可以引導他們向管理員要求存取權限。
沒有一個產品開發者會歡迎使用者放棄。為遇到錯誤的用戶提供指導以幫助他們克服這種情況至關重要。例如,為臨時網路錯誤提供刷新按鈕,或在存取不存在的頁面時提供返回上一畫面的按鈕。
但是,在某些情況下,通知使用者錯誤情況根本沒有幫助。例如,如果程式碼包含無法在低規格設備或瀏覽器上運行的元件,則使用者無法對其執行任何操作。 (也許是一條建議使用不同瀏覽器的訊息?)
兩種情況,1 和 2,都涉及提供訊息。不同之處在於,案例 1 包含一些提示使用者採取步驟的操作或指導。
遇到的錯誤是否是使用者可以自行解決的?
那麼,我們該如何處理發生的錯誤呢?當發生錯誤時應用程式應該向用戶提供什麼樣的介面?讓我們根據錯誤的特徵來探討如何處理不同類型的錯誤。
一個典型的例子是網路錯誤。這些可能隨時發生,具體取決於使用者的網路環境。最簡單的解決方案是通知用戶這是一個“臨時錯誤”,並提供重試之前操作的指導。
對於這些錯誤,確保整個應用程式不會受到不利影響至關重要。例如,如果一個應用程式在一個畫面上呼叫 10 個 API,則失敗的一個 API 不應在整個應用程式中觸發錯誤訊息,並且需要重試所有呼叫。
相反,只專注於恢復失敗的區域。
這些錯誤很難預測且沒有直接的解決方案。在開發過程中應該盡量減少此類錯誤,並且應該有一個在發生錯誤時進行處理的計劃。由於用戶無法自行解決這些錯誤,因此可能有必要提供一種簡單的方式來聯絡客戶支援。
開發人員無法控制的錯誤應使用 Sentry 等工具進行監控。需要修復這些錯誤以防止用戶遇到它們。此外,確保有一種機制可以讓用戶在遇到此類錯誤時返回應用程式。
這些是已知錯誤,使用者沒有可用的解決方案。如果使用者無法自行解決這些問題,則表示錯過了錯誤處理的機會。如果使用者故意執行異常操作,則可能是存在安全漏洞的跡象。
當有惡意利用該應用程式時,就會出現這些錯誤。它們通常源自於安全漏洞,應該在開發過程中加以預防。解決 CORS 和 XSS 等基本安全問題並與安全團隊合作建立安全的應用程式至關重要。
這些錯誤通常是開發人員已經意識到的業務邏輯的一部分:
在這些情況下,請在應用程式內提供適當的指導或建立單獨的頁面來指導使用者。
使用者應該清楚了解遇到錯誤訊息後下一步該做什麼。這有助於減少錯誤頻率並防止用戶放棄。因此,除了錯誤訊息之外,還必須包含號召性用語。
例如,如果存在欄位驗證錯誤,請注意發生錯誤的欄位。如果使用者導航到不存在的頁面,請提供一個返回上一畫面的按鈕。
我們探索了錯誤處理。讓我們利用各種工具和技術來有效地管理錯誤,例如錯誤監控工具和React的ErrorBoundary,它可以捕捉有限範圍內的錯誤。
以上是以客戶端為中心的錯誤處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!