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

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

本教程向您展示瞭如何將自定義的Google搜索API集成到您的博客或網站中,提供了比標準WordPress主題搜索功能更精緻的搜索體驗。 令人驚訝的是簡單!您將能夠將搜索限制為Y

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

本文系列在2017年中期進行了最新信息和新示例。 在此JSON示例中,我們將研究如何使用JSON格式將簡單值存儲在文件中。 使用鍵值對符號,我們可以存儲任何類型的

利用輕鬆的網頁佈局:8 ESTISSEL插件jQuery大大簡化了網頁佈局。 本文重點介紹了簡化該過程的八個功能強大的JQuery插件,對於手動網站創建特別有用

核心要點 JavaScript 中的 this 通常指代“擁有”該方法的對象,但具體取決於函數的調用方式。 沒有當前對象時,this 指代全局對象。在 Web 瀏覽器中,它由 window 表示。 調用函數時,this 保持全局對象;但調用對象構造函數或其任何方法時,this 指代對象的實例。 可以使用 call()、apply() 和 bind() 等方法更改 this 的上下文。這些方法使用給定的 this 值和參數調用函數。 JavaScript 是一門優秀的編程語言。幾年前,這句話可

jQuery是一個很棒的JavaScript框架。但是,與任何圖書館一樣,有時有必要在引擎蓋下發現發生了什麼。也許是因為您正在追踪一個錯誤,或者只是對jQuery如何實現特定UI感到好奇

該帖子編寫了有用的作弊表,參考指南,快速食譜以及用於Android,BlackBerry和iPhone應用程序開發的代碼片段。 沒有開發人員應該沒有他們! 觸摸手勢參考指南(PDF)是Desig的寶貴資源


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),