為提供良好的使用者體驗,程式碼應正確處理錯誤。 向使用者顯示提供可行建議的錯誤訊息,說明解決問題的修正步驟。
本文說明連接器可能發生的錯誤、錯誤訊息的運作方式,以及如何正確處理連接器錯誤。
資訊:如要進一步瞭解如何在 JavaScript 中處理例外狀況,請參閱「try...catch 陳述式」。
錯誤類型
使用者在使用連結器時可能遇到的錯誤類型和原因,通常屬於下列三種情況之一:
連接器內部和外部錯誤應由連接器開發人員處理。這些錯誤是由開發人員撰寫的程式碼所致。
連接器內部錯誤
連接器執行期間發生內部錯誤。舉例來說,如果連接器在執行 getData()
時無法剖析 API 回應,您應預期會發生這類錯誤,並視情況提供簡單易懂的說明。
如要進一步瞭解如何處理連接器內部錯誤,請參閱「處理連接器錯誤的最佳做法」。
連接器外部錯誤
連接器執行後發生連接器外部錯誤。舉例來說,如果對三個欄位提出 getData()
要求,但只傳回兩個欄位的資料,雖然連結器已完成執行,但未滿足 Looker Studio 的要求。徹底測試有助於避免這些錯誤。
如要修正連接器外部錯誤,通常可以查看錯誤詳細資料 (如有),並偵錯程式碼來找出問題。如要進一步瞭解如何偵錯連接器,請參閱「偵錯程式碼」。
Looker Studio 錯誤
Looker Studio 錯誤與連接器程式碼無關。舉例來說,如果使用者嘗試搭配沒有日期/時間維度的資料來源使用時間序列圖表。
如果錯誤與連接器沒有直接關聯,連接器開發人員就不必採取任何行動。如需其他協助,請前往 Looker Studio 說明中心。
顯示錯誤訊息
根據管理員狀態顯示錯誤詳細資料
如果連接器擲回錯誤,Looker Studio 會根據使用者的管理員狀態顯示錯誤訊息。
- 如果使用者是管理員,則會看到所有詳細資料。包括錯誤訊息、錯誤類型和堆疊追蹤。
- 如果使用者不是管理員,只有在錯誤包含易於理解的訊息時,才會顯示詳細資料。如要進一步瞭解如何向非管理員使用者顯示錯誤訊息,請參閱「擲回使用者會看到的錯誤」。
擲回使用者會遇到的錯誤
根據預設,只有連接器管理員會看到錯誤詳細資料。這有助於防止無意間揭露機密資訊,例如堆疊追蹤中的 API 金鑰。如要向非管理員使用者顯示錯誤訊息,請使用 Looker Studio Apps Script 服務中的 newUserError()。
範例:
try {
// API request that can be malformed.
getDataFromAPI();
} catch (e) {
DataStudioApp.createCommunityConnector()
.newUserError()
.setDebugText('Error fetching data from API. Exception details: ' + e)
.setText('There was an error communicating with the service. Try again later, or file an issue if this error persists.')
.throwException();
}
在本範例中,setText()
會設定向所有使用者顯示的文字,setDebugText()
則會設定只向管理員使用者顯示的文字。
處理連接器錯誤的最佳做法
您應盡可能在執行連接器程式碼期間,嘗試擷取及處理錯誤。舉例來說,可能導致錯誤或不理想狀態的常見作業包括:
- 擷取網址嘗試失敗 (暫時性錯誤、逾時)
- 指定時間範圍內沒有可用的資料
- 無法剖析或格式化 API 資料
- 授權權杖已遭撤銷
處理可復原的錯誤
應處理可能失敗但可復原的連接器執行點。舉例來說,如果 API 要求因非嚴重原因 (例如伺服器負載卸除) 而失敗,則應先重試,再擲回錯誤。
擷取及擲回錯誤
應擷取無法復原的錯誤並重新擲回。重新擲回的錯誤應有助於使用者瞭解發生錯誤的原因。如果問題可以修正,請提供詳細的修正措施。
請參閱「擲回使用者會遇到的錯誤」。
將錯誤記錄至 Stackdriver
使用 Stackdriver 記錄錯誤和其他訊息。這有助於瞭解錯誤、偵錯問題,以及找出未處理的例外狀況。
如要進一步瞭解 Stackdriver Error Reporting、如何為指令碼啟用例外狀況記錄,以及如何安全地識別使用者以利偵錯,請參閱「使用 Stackdriver Logging」。
已淘汰:請使用 DS_USER:
前置字串取得安全錯誤訊息
如要向非管理員使用者提供容易瞭解的錯誤訊息,請在錯誤訊息中加入 DS_USER:
前置字元。這個前置字元用於識別非管理員使用者的安全訊息,不會顯示在實際的錯誤訊息中。
以下範例包括:向非管理員使用者顯示錯誤訊息,以及只向管理員使用者顯示錯誤訊息: