AEM隨附處理HTTP錯誤的標準錯誤處理常式;例如,透過顯示:
系統提供的指令碼存在(在/libs/sling/servlet/errorhandler
下)以回應錯誤碼,依預設,標準CQ例項可使用下列指令碼:
AEM以Apache Sling為基礎,因此請參閱https://sling.apache.org/site/errorhandling.html以取得Sling錯誤處理的詳細資訊。
在製作例項上,預設會啟用CQ WCM除錯篩選器。 這一律會導致回應代碼200。 預設錯誤處理程式通過將完整堆棧跟蹤寫入響應來響應。
在發佈執行個體上,CQ WCM除錯篩選器會一律停用**(即使已設為啟用)。
您可以開發自己的指令碼,以在發生錯誤時自訂錯誤處理常式顯示的頁面。 您的自訂頁面將建立在/apps
下,並覆蓋預設頁面(位於/libs
下)。
如需詳細資訊,請參閱使用覆蓋 。
在存放庫中,複製預設指令碼:
/libs/sling/servlet/errorhandler/
/apps/sling/servlet/errorhandler/
由於目的地路徑預設不存在,因此您首次執行此動作時需要建立它。
導航到 /apps/sling/servlet/errorhandler
. 您可以在此處:
儲存變更並測試。
404.jsp和403.jsp處理常式經過專門設計,以滿足CQ5驗證的需要;尤其是,允許在發生這些錯誤時進行系統登入。
因此,應該非常謹慎地替換這兩個處理程式。
HTTP 500錯誤是由伺服器端例外所造成。
當請求處理導致例外時,Apache Sling架構(AEM建置於上):
記錄例外狀況
傳回:
在回應的正文中。
通過自定義由錯誤處理程式顯示的頁面,可以建立500.jsp
指令碼。 但只有在明確執行HttpServletResponse.sendError(500)
時,才會使用;例如從例外捕手那裡。
否則,回應代碼會設為500,但不會執行500.jsp
指令碼。
要處理500錯誤,錯誤處理程式指令碼的檔案名必須與異常類(或超類)相同。 要處理所有此類異常,可以建立指令碼/apps/sling/servlet/errorhandler/Throwable.js
p或/apps/sling/servlet/errorhandler/Exception.jsp
。
在製作例項上,預設會啟用CQ WCM除錯篩選器。 這一律會導致回應代碼200。 預設錯誤處理程式通過將完整堆棧跟蹤寫入響應來響應。
若為自訂錯誤處理常式,則需要程式碼為500的回應,因此CQ WCM除錯篩選器必須停用。 這可確保傳回回應代碼500,進而觸發正確的Sling錯誤處理常式。
在發佈執行個體上,CQ WCM除錯篩選器會一律停用**(即使已設為啟用)。