我們知道JSP終究會轉換為Servlet,而運行時真正動作的是Servlet類,所以錯誤可能發生在兩個時候:一個是JSP轉換為Servlet原始碼時,因為JSP語法錯誤而導致無法產生Servlet原始碼,或是已轉換為Servlet程式碼,但編譯時編譯器檢查出錯誤,這稱之為Translation Time Processing Errors;第二個錯誤發生的時期在於客戶請求執行Servlet時,因為程式邏輯或運行時未考慮到的錯誤而產生例外,這稱之為Client Request Time Processing Errors。
如果編譯過後的Servlet在使用者請求之後,在運行過程中產生了錯誤而丟出例外,這個例外如果沒有被處理,則最後會由Container處理,而Container再將訊息交由Server傳回給客戶端,基本上也是會出現"....encountered an internal error....",不過在回報頁面中還會出現例外的堆疊追蹤訊息,依此您可以判斷應該是Client Request Time Processing Errors。
<html><head><title>錯誤處理頁面</title></head><body> <h1>網頁發生錯誤:</h1>java.lang.Exception: 這是一個假裝的錯誤,純綷丟出例外^_^ <h2>顯樣本外堆疊追蹤:</h2> java.lang.Exception: 這是一個假裝的錯誤,純綷丟出例外^_^ at org.apache.jsp.errordemo_jsp._jspService(errordemo_jsp.java:45) at ......... 略 at java.lang.Thread.run(Thread.java:534)</body></html>