java.lang.AG真人接口BBIN體育對接平台異常產生的原因及解決辦法


錯誤類型大致為以下幾種:
java.lang.IllegaAG真人接口BBIN體育對接平台Q2747044651lStateException:Cannot forward a response that is already committed 

IllegalStateException:response already commited


IllegalStateException:getOutputStream() has already been called for this request
…………
=========================================================
IllegalStateException: Can not perform this action after onSaveInstanceState:
#解決辦法:onSaveInstanceState方法是在該Activity即將被銷毀前調用,來保存Activity數據的,如果在保存玩狀態后
再給它添加Fragment就會出錯。解決辦法就是把commit()方法替換成 commitAllowingStateLoss()
=========================================================
錯誤原因:
該異常表示,當前對客戶端的響應已經結束,不能在響應已經結束(或說消亡)后再向客戶端(實際上是緩沖區)輸出任何內容。
Object is no longer valid to operate on. Was it deleted by another thread?
該異常表示,realmObject對象在其他線程已被刪除,在這個線程中使用的時候拋出的異常。

具體分析:

首先解釋下flush(),我們知道在使用讀寫流的時候數據先被讀入內存這個緩沖區中, 然后再寫入文件,但是當數據讀完時不代表數據已經寫入文件完畢,因為可能還有一部分仍未寫入文件而留在內存中,這時調用flush()方法就會把緩沖區的數據強行清空輸出,因此flush()的作用就是保證緩存清空輸出。response是服務端對客戶端請求的一個響應,其中封裝了響應頭、狀態碼、內容等,服務端在把response提交到客戶端之前,會向緩沖區內寫入響應頭和狀態碼,然后將所有內容flush。這就標志着該次響應已經committed(提交)。對於當前頁面中已經committed(提交)的response,就不能再使用這個response向緩沖區寫任何東西(注:同一個頁面中的response.XXX()是同一個response的不同方法,只要其中一個已經導致了committed,那么其它類似方式的調用都會導致 IllegalStateException異常)。

=====================================================

補充另一種異常情況:
我這里的異常是:
java.lang.IllegalStateException
Can't change tag of fragment d{e183845 #0 d{e183845}}: was d{e183845} now d{e183845 #0 d{e183845}}
經查,我在顯示fragment的代碼中使用了:
fragment.show(getSupportFragmentManager, fragment.toString());
而這里是因為兩次toString()結果不同,導致不同的tag指向的是同一個fragment。
獲取fragment的tag的正確方法應該是使用其提供的fragment.getTag()方法。

=====================================================
補充異常:
java.lang.IllegalStateException
Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 37 path $.data
錯誤原因:該異常是由於服務器錯誤返回的JSON字符串和服務器正常下時返回的JSON字符串結構不同,導致利用Gson解析的時候報了一個異常:本該去解析集合卻強制去解析對象所致.
解決辦法:在使用Gson解析JSON時try cash一下,不報錯按照正常邏輯繼續解析,報異常則處理為請求失敗邏輯即可.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM