自訂錯誤處理常式所顯示的頁面

AEM隨附標準錯誤處理常式,可處理HTTP錯誤;例如,顯示:

chlimage_1-67

系統提供的指令碼存在(在/libs/sling/servlet/errorhandler下)以響應錯誤代碼,預設情況下,標準CQ實例可使用以下指令碼:

  • 403.jsp
  • 404.jsp
注意

AEM是以Apache Sling為基礎,因此請參閱https://sling.apache.org/site/errorhandling.html以取得Sling Error Handling的詳細資訊。

注意

在作者實例上,預設會啟用CQ WCM除錯篩選器。 這一律會產生回應代碼200。 預設錯誤處理程式通過將完整堆棧跟蹤寫入響應來響應。

在發佈例項上,CQ WCM除錯篩選器會一律停用​**(即使設定為已啟用)。

如何自訂錯誤處理常式所顯示的頁面

您可以開發自己的指令碼,以自訂在遇到錯誤時由錯誤處理常式顯示的頁面。 您的自訂頁面將建立在/apps下,並覆蓋預設頁面(位於/libs下)。

注意

如需詳細資訊,請參閱使用覆蓋

  1. 在儲存庫中,複製預設指令碼:

    • /libs/sling/servlet/errorhandler/
    • /apps/sling/servlet/errorhandler/

    由於目標路徑預設不存在,因此首次執行此操作時需要建立該路徑。

  2. 導航到 /apps/sling/servlet/errorhandler. 您可以在這裡:

    • 編輯適當的現有指令碼,以提供所需的資訊。
    • 建立和編輯所需程式碼的新指令碼。
  3. 儲存變更並進行測試。

注意

404.jsp和403.jsp處理常式是專為配合CQ5驗證而設計;尤其是允許在發生這些錯誤時進行系統登錄。

因此,更換這兩個操縱員應該非常謹慎。

自定義對HTTP 500錯誤的響應

HTTP 500錯誤是由伺服器端例外所造成。

  • 500內部伺服
    器錯誤伺服器遇到意外狀況,無法完成要求。

當請求處理結果產生例外時,Apache Sling架構(此AEM是內建的):

  • 記錄異常

  • 傳回:

    • HTTP回應碼500
    • 異常堆棧跟蹤

    在回應本體中。

通過自定義錯誤處理程式顯示的頁,可以建立500.jsp指令碼。 但是,只有在明確執行HttpServletResponse.sendError(500)時才使用;例如從例外捕手那裡。

否則,響應代碼設定為500,但不執行500.jsp指令碼。

要處理500個錯誤,錯誤處理程式指令碼的檔案名必須與異常類(或超類)相同。 要處理所有此類異常,可以建立指令碼/apps/sling/servlet/errorhandler/Throwable.jsp或/apps/sling/servlet/errorhandler/Exception.jsp

注意

在作者實例上,預設會啟用CQ WCM除錯篩選器。 這一律會產生回應代碼200。 預設錯誤處理程式通過將完整堆棧跟蹤寫入響應來響應。

對於自訂錯誤處理常式,需要代碼為500的回應——因此CQ WCM除錯篩選必須停用。 這可確保傳回回回應程式碼500,這會反過來觸發正確的Sling錯誤處理常式。

在發佈例項上,CQ WCM除錯篩選器會一律停用​**(即使設定為已啟用)。

本頁內容

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now