《電子技術應用》
您所在的位置:首頁 > 其他 > 業界動態 > Java異常處理技術及EJB中的應用

Java異常處理技術及EJB中的應用

2009-02-25
作者:郭廣軍,羊四清,戴經國,賀文華

1 引言
傳統的基于函數返回錯誤代碼的錯誤處理方法存在明顯的不足,如程序邏輯復雜,結構不清;可靠性差,維護不便;返回信息有限,不直觀需譯碼;返回代碼標準化困難,代碼復用率低;在面向對象的應用系統中,有些如構造方法等沒有返回值而無法報告程序錯誤。因此,在Java中新的錯誤檢測和報告方法—異常處理機制應運而生。
異常是指中斷程序正常執行流程的錯誤事件,如程序打開不存在的文件、裝載不存在的類、網絡連接中斷、被零除、訪問數組越界、系統資源耗盡等。在Java中,異常[1](Exception,例外)是特殊的運行錯誤對象,是異常類的一個對象,而每個異常類代表一種運行錯誤,在異常類中封裝了該運行錯誤的信息和處理錯誤的方法等內容。Java異常處理機制的基本思想是由發現而不能處理錯誤的方法引發一個異常對象,然后由該方法的直接或間接調用者捕獲并處理這個錯誤。其優越性有:在catch中傳播與捕獲錯誤信息,實現了錯誤代碼與業務邏輯的分離,結構清晰;可對錯誤類型分組并標準化;方便了對錯誤的定位與維護;能有效防止由于異常而導致程序運行崩潰,可靠性高;強制程序員考慮程序的容錯性、健壯性和安全性。

2? Java異常處理機制
2.1? 異常類
2.1.1? 系統定義的異常類
異常類用于處理異常,分為系統定義的異常類和用戶自定義的異常類[1]。在java.lang包中提供的Throwable類是異常類層次結構的頂層類,Error類和Exception類是從Throwable類直接派生的兩個知名子類
Exception類:它代表了Java語言中異常的基本屬性,除Java預定義的由Exception類派生的諸多異常類外,還支持用戶擴展Exception類來實現自定義異常類。其構造函數主要有public Exception()和public Exception(String s)等;它從Throwable類繼承了若干方法,常用的有:public String toString()方法,用來返回異常類信息;public void printStackTrace()方法,默認在當前標準輸出設備上輸出當前異常對象的堆棧使用軌跡。Exception類定義的是非致命性錯誤,允許用戶編寫代碼來處理這類錯誤,并繼續程序的執行。通常觸發異常(Exception)的原因有打開的文件不存在;網絡連接中斷;操作數超過允許范圍;想要加載的類文件不存在;試圖通過空的引用型變量訪問對象;數組下標越界等。
Error類:它定義的錯誤是致命性錯誤,如虛擬機錯誤、裝載錯誤、動態連接錯誤,一般會導致程序停止執行,通常是由于Java系統或執行環境發生錯誤(Error)而導致的。由于這類異常主要與硬件、運行時系統有關,而不是由用戶程序本身拋出的,因此用戶程序不對這類異常進行處理。
需指出,除java.lang包中定義的異常處理之外,其他的Java包中也包括異常。實際上幾乎每個Java包都定義了相應的異常類。此外,運行時異常RuntimeException類及其派生子類是Java程序員不用處理的異常。Java創建者認為運行時異常不應由程序來處理,而且程序也很難真正的對付運行時異常。
2.1.2? 用戶自定義異常類
用戶自定義異常類是指擴展Exception類或其他某個已經存在的系統異常類或其他用戶異常類而形成新的異常類。可以給新的異常類定義新的屬性和方法,或重載父類的屬性和方法,并使這些屬性和方法能夠體現該類所對應的錯誤信息。要特別注意的是:第一? 一個方法被覆蓋時,覆蓋的方法必須扔出與被覆蓋方法相同的異?;蚱洚惓n惖淖宇悾坏诙? 若父類拋出多個異常,則覆蓋方法只能拋出父類所拋出的異常的一個子集,或者說不能拋出新的異常。
2.2? 基本機制與語法結構
2.2.1? 基本機制
Java異常處理機制采用中斷模式[2],即引發并拋出異常后,中止正在執行的程序塊,控制流轉至異常處理器,待完成異常處理后,再返回調用點繼續執行。異常處理的基本算法是:
Step1:拋出異常,即創建一個異常對象并將它交給運行時系統的過程;
Step2:捕獲異常,即找到異常處理程序的過程:運行時系統從發生錯誤的方法開始回溯,在方法調用堆棧里向后搜索,直到找到能處理當前發生的異常的處理程序的方法;
Step3:處理異常,即通過方法調用來實現對異常的處理;
Step4:終止異常處理。若運行時系統在方法調用棧中遍歷了所有的方法而未找到合適的異常處理程序,則顯示缺省錯誤并終止執行運行時系統的異常處理。
2.2.2? 語法結構
Java異常處理機制通過throws、throw、try、catch和finally 5個關鍵詞來實現,分為三個基本部分[3]。
·throws:此關鍵字統一定制并明確標明了一個方法可能拋出的各種異常,這些異常是該方法定義的一部分。其實質是允許將異常處理遞歸交給調用它的上一級方法去處理,此時Java編譯器會強制此方法的調用者必須將其放在調用方法的try、catch塊中以拋出并捕獲處理這些異常。
·throw:此語句用來拋出緊跟其后的一個異常對象給此方法的調用者,此異常對象可用new創建,或者是一個Throwable的實例句柄通過參數傳到catch中。因為用戶自定義的異常不能由系統自動拋出,所以必須借助于throw語句來拋出各種錯誤情況所對應的異常,且要求在程序中的合適位置定義好用戶自定義的異常類。
·try-catch-finally:此語句是Java錯誤處理的基本結構,主要用來捕獲和處理一個或多個異常。通常由try、catch、finally三個塊組成。?。﹖ry塊:將所有可能拋出異常的代碼部分放入try塊中;ⅱ)catch塊:用緊跟在try塊后面一個或多個catch子句來捕獲異常,其的目標是處理異常,把變量設到合理的狀態,并象沒有出錯一樣繼續運行。若一個子程序不處理這個異常,則可返回到上一級處理,如此不斷的遞歸向上直到最外一級。ⅲ)finally塊:finally是Java異常處理機制的精髓,使用finally可以維護對象的內部狀態、清理非內存資源、將系統恢復到應該處于的狀態。若沒有finally,要實現其功能的代碼是很費解的。finally塊是可選塊,若定義了finally塊,則不論try塊中有無異常產生,finally塊都會被執行;甚至若在try或catch塊中執行了return、break語句,finally塊也會被執行,但要特別注意此時finally塊后面的語句并不會被執行。只有在try或catch中執行了System.exit(0)操作,才不會執行finally塊。另要特別指出的是:捕獲異常時,catch語句是按其位置由前至后依次對被拋出的異常對象進行匹配捕獲,若有多個catch語句,則異常類要按從子類到父類的順序放置;在應用技巧中,還可通過在try塊中由throw拋出“異?!?,然后在catch塊中捕獲之,實現程序中業務邏輯控制流程的跳轉。
2.3? 異常處理的基本原則
對于非運行時異常必須捕獲或聲明,而對運行時異常則不必,可以交給Java運行時系統來處理;對于自定義的異常類,通常把它作為Exception類的子類,且類名常以Exception結尾,不要把自定義的異常類作為RuntimeException類或Error的類的子類;在捕獲或聲明異常時,要選取合適類型的異常類,注意異常類的層次,根據不同的情況使用一般或特殊的異常類;根據具體的情況選擇在何處處理異常,或者在方法內捕獲并處理,或者用throws子句把它交給調用棧中上層的方法去處理;在catch語句中盡可能指定具體的異常類型,必要時使用多個catch;使用finally語句為異常處理提供統一的出口;若無法處理某個異常,則不捕獲它;若捕獲了一個異常,則要對它進行適當的處理;盡量在靠近異常被拋出的地方捕獲異常;除非要向上層遞歸拋出異常,否則要在捕獲異常的地方將其記錄到日志中。

3? EJB中的異常處理
3.1? EJB異常處理

EJB(Enterprise JavaBean)是J2EE企業級應用開發的核心組件,EJB的分布式和事務屬性使得其異常處理成為一個更重要的問題[4]。EJB中異常可分為三類[5]:?。㎎VM異常:由JVM拋出,是一種致命錯誤。ⅱ)系統異常:一般由JVM以RuntimeException的子類拋出,是一種非受查異常。ⅲ)應用程序異常:它是一種定制異常,由應用程序或第三方類庫以Exception類或其子類拋出,是一種受查異常,通常由EJB方法的調用者來處理之。EJB容器攔截了EJB組件上的每一個方法調用,因此方法調用中發生的每一個異常也被EJB容器所攔截。EJB規范只處理應用程序異常和系統異常這兩種類型的異常。
應用程序異常:是指在遠程接口的方法說明中所聲明的異常,它不是遠程異常RemoteException,也不應繼承RuntimeException或其子類。但是,在遠程接口方法的throws子句中聲明的非受查異常并不會被當作應用程序異常。應用程序異常是業務工作流中的例外,當這種類型的異常被拋出時,客戶機可得到一個恢復選項。當發生應用程序異常時,默認情況下EJB容器不會自動回滾事務,只有被顯式說明并通過調用關聯的EJBContext對象的setRollbackOnly()方法才能回滾事務。實際上,對于應用程序異常EJB容器通常以它原本的狀態傳送給客戶機而不會以任何方式包裝或修改它。
系統異常:通常被定義為非受查異常,EJB方法不能從這種異常中恢復。當EJB容器攔截到非受查異常時,會自動回滾事務并執行必要的清理工作,然后把該非受查異常包裝到RemoteException類或其子類中并拋給客戶機。對于受查異常,若要使用EJB容器的內務處理,則必須將受查異常作為非受查異常拋出。因此,每當觸發受查系統異常時,應該對其原始的異常以javax.ejb.EJBException類或其子類方式包裝后拋出。由于EJBException本身是非受查異常,因此不需要在方法的throws子句中聲明它。EJB容器會自動捕獲EJBException或其子類,并把它包裝到RemoteException中,然后拋給客戶機。
需指出,雖然EJB規范規定系統異常由應用程序服務器記錄,但記錄格式會因應用程序服務器的不同而異。為確保異常記錄格式的統一,方便對其進行統計分析,在代碼中記錄異常是一種好的策略。此外,在EJB1.0規范中要求把受查系統異常以RemoteException拋出,而EJB 1.1及以上規范則規定EJB實現類絕不應拋出RemoteException。
3.2? 關鍵技術
3.2.1? 日志機制

盡管用System.out.println()方法跟蹤異常方便,但開銷大,對I/O處理的同步控制將大大降低系統吞吐量。缺省時堆棧跟蹤被輸出至控制臺,但在實際的應用系統中,通過瀏覽控制臺來查看異常跟蹤不太現實。因此,在大型應用系統的開發、測試和運行等生命周期中,采用日志機制和恰當的編碼策略,精確地記錄各種類型的異常,可以降低系統開銷,提高軟件性能和質量。知名的日志實用程序有兩種:Log4J[6]是Apache的Jakarta的一個開放源代碼的項目,J2SE 1.4捆綁提供了日志處理包(java.util.logging)[7],它們的使用方法請參考相關文獻。
3.2.2? Decorators設計模式
在面向對象的程序設計中若用一個對象(the Decorators)包裝另外一個對象,被稱為Decorators設計模式?;贒ecorators設計模式,通過包裝原始的異常消息并在EJB組件中將其重新拋出,以方便對該異常的查詢和訪問。其次,由于Log4J只能記錄String消息,所以要利用Decorators設計模式定義一個專門類負責把堆棧跟蹤轉換成String,以獲取該堆棧跟蹤的String表示。
3.3? EJB異常處理策略
3.3.1? 常見EJB異常處理的不足
·拋出帶有出錯消息的異常:此種方法存在異常內容可能被“吞掉”的現象。
·記錄到控制臺并拋出一個異常:僅當控制臺可用時調用者才能向后跟蹤。
·包裝原始的異常以保護其內容:可能導致重復記錄,產品日志或控制臺不能被交叉引用。
3.3.2? EJB異常處理的優化策略
·優化應用程序異常處理:由EJB開發者顯式拋出,通常包裝了含義清楚消息,不必將其記錄到EJB層或客戶機層,而以一種直觀有意義的方式提供給最終用戶,并帶上其解決方案的途徑。
實體Bean一般是啞類,通常應用程序異常主要來源于會話Bean。從實體Bean拋出的應用程序異常類型通常是CreateException、FinderException、RemoveException及它們的子類。當引用其它EJB遠程接口時,實體Bean會遇到RemoteException,在查找其它EJB組件時會遇到NamingException,若使用BMP實體Bean,則會碰到SQLException。與這些類似的受查系統異常應該被捕獲,并被包裝起來,作為EJBException或它的一個子類拋出。在優化的EJB設計中,客戶機一般不直接調用實體Bean上的方法,而通過會話Bean間接訪問實體Bean。若會話Bean調用相同的實體Bean方法,則要避免對異常的重復記錄。會話Bean和實體Bean處理系統異常的方式基本相似。可采用訪問標識技術避免對同一異常的重復記錄。
·優化系統異常處理:比應用程序異常處理更為復雜,它的發生不受EJB開發者的控制且異常信息不直觀,需要對其原始異常進行包裝,以清楚地表達系統異常的含義。
·優化Web層設計:通常把異常記錄到Web層本身,則易于實現且代碼簡潔。這要求Web層必須是EJB層的唯一客戶機,且Web層必須建立在業務委派(Business Delegate)、FrontController或攔截過濾器(Intercepting Filter)等模式和Struts或其它類似于MVC的框架基礎上。
實際應用中,即使采用良好的異常處理策略,但由于編譯器和運行時優化,會限制使用堆棧跟蹤程序跟蹤異常的能力。通常把大的方法調用分割為更小的、更易于管理的塊,并提高代碼復用率;并將異常類型按需要劃分成細粒度的、具體的異常,在捕獲異常時則捕獲已規定好的具體類型的異常,避免捕獲所有類型的異常。

3.4? EJB異常處理實例
例1:ejbCreate()方法中的FinderException異常處理。其代碼如下:
public Object ejbCreate(RatepayingOrderValue value) throws CreateException {
try { if (value.getItemName() == null) {
throw new CreateException("不能創建報稅單!"); }
String taxpId = value.getTaxpayerId();
Taxpayer taxp = taxpayerHome.fingByPrimaryKey(taxpId);
this.taxpayer = taxp;
} catch (FinderException fe) {
//作為應用程序異常,還是系統異常?
} catch (RemoteException re) {
//這是系統異常,并記錄在日志中。
throw ExceptionLogUtil.createLoggableEJBException(re);
}
return null;
}
例1中報稅單RatepayingOrder實體Bean的ejbCreate()方法試圖獲取納稅人Taxpayer實體Bean的一個遠程引用,可能導致FinderException。此處,盡管可把FinderException當作應用程序異?;蜃飨到y異常,但是若把它當系統異常則更好,因為這可以提高EJB組件對客戶機的透明性。同理,對于會話Bean或者實體Bean試圖創建另一個會話Bean,可能導致的CreateException,或者會話Bean在它的某個容器回調方法中獲得了一個FinderException等,都最好將其作為系統異常。此外,若考慮會話Bean在處理下報稅單時,用戶須具有一個簡歷,若沒有,則會話Bean將觸發ObjectNotFoundException異常,這時最好將其作為應用程序異常拋出,以告知用戶其簡歷丟失。
例2:logon()方法的InvalidUserDataException應用程序異常處理。其代碼如下:
public void logon(String user, String password) throws InvalidUserDataException
{?if (user == null || password ==null)
??throw new InvalidUserDataException();
?serviceImpl.logon(user, password);
}
以下是應用程序異常類InvalidUserDataException的定義。
public class InvalidUserDataException extends Exception
{? public InvalidUserDataException()
?{super(“用戶名或密碼不能為空!”); }
}

4? 結論
在企業級的大型軟件開發中,嚴謹強大的Java異常處理機制為軟件質量控制提供了有力的技術支持,提高了軟件的可讀性、可維護性、容錯性和開發效率。充分有效的利用Java異常處理機制、采用合適的異常處理策略,是提高EJB中異常處理的性能的有效途徑。

參考文獻:
[1]? Bruce Eckel. Thinking in Java[M].Beijing: China Machine Press,2000.240-281.
[2]? 趙化冰,唐英,唐文彬,蘆東昕. Java異常處理[J]. 計算機應用, 2003,12:46-48.
[3]? 張聰品,趙琛,糜宏斌. 異常處理機制研究[J].計算機應用研究,2005,4:86-89.
[4]? [美]Chuck Cavaness Brian Keeton著,智慧東方工作室 譯. EJB 2.0企業級應用程序開發[M].北京:機械工業出版社,2002,3.294-310.
[5]? EJB異常處理的最佳做法. http://www.evget.com/view/article/viewArticle.asp?article=548
[6]? Log4J框架. http://jakarta.apache.org/log4j/docs/index.html
[7]? Java Logging API. http://java.sun.com/j2se/1.4/docs/api/java/util/logging/
package-summary.html

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          裸体女人亚洲精品一区| 亚洲一二三级电影| 免费人成精品欧美精品| 亚洲激情六月丁香| 亚洲一区美女视频在线观看免费| 亚洲精品乱码久久久久久蜜桃91| 亚洲国产日韩在线一区模特| 在线免费一区三区| 欧美日韩国产精品| 欧美视频导航| 亚洲欧美在线网| 裸体女人亚洲精品一区| 国产精品多人| 免费视频一区二区三区在线观看| 国产婷婷色综合av蜜臀av| 久久―日本道色综合久久| 亚洲免费在线播放| 亚洲欧美一区二区三区久久| 欧美精品久久久久a| 欧美一区二区网站| 免费成人你懂的| 国产一区二区三区四区五区美女| 久久久久久久久蜜桃| 亚洲一二三区视频在线观看| 亚洲一级在线| 狠狠色狠狠色综合日日小说| 免费久久久一本精品久久区| 日韩一级在线| 午夜精品美女自拍福到在线| 欧美成人乱码一区二区三区| 欧美日韩在线视频观看| 免费视频久久| 国产精品一区二区三区四区五区| 日韩视频在线免费观看| 亚洲黄色片网站| 亚洲美女在线一区| 羞羞视频在线观看欧美| 日韩一级欧洲| 亚洲高清av在线| 久久精品免费看| 欧美视频在线一区二区三区| 开元免费观看欧美电视剧网站| 国产女优一区| 亚洲综合精品一区二区| 亚洲欧洲在线一区| 欧美人成在线| 国产自产女人91一区在线观看| 中文一区字幕| 久久国产欧美| 国产日韩一区二区三区| 国语自产精品视频在线看| 国产精品一区二区久激情瑜伽| 在线精品国产成人综合| 国产在线精品一区二区夜色| 国产日韩精品一区| 国产精品成人一区二区三区夜夜夜| 精品51国产黑色丝袜高跟鞋| 久久久国产精彩视频美女艺术照福利| 一本久道综合久久精品| 欧美网站大全在线观看| 久久本道综合色狠狠五月| 一区二区三区视频在线| 亚洲三级视频| 久久爱91午夜羞羞| 国产一区美女| 99人久久精品视频最新地址| 亚洲精品美女久久7777777| 日韩视频精品在线| 欧美在线观看网站| 尤物99国产成人精品视频| 国产精品扒开腿做爽爽爽软件| 日韩一级免费| 欧美性色视频在线| 一本色道久久综合亚洲精品小说| 一区二区免费在线视频| 伊人久久大香线蕉综合热线| 亚洲激情中文1区| 亚洲激情校园春色| 亚洲精品国产精品乱码不99| 国产网站欧美日韩免费精品在线观看| 一区二区三区精品在线| 国产欧美在线观看| 99在线精品免费视频九九视| 美女诱惑黄网站一区| 一区二区三区国产盗摄| 免费不卡在线观看| 亚洲欧美日韩国产一区二区| 狠狠色丁香婷婷综合久久片| 欧美日韩亚洲天堂| 欧美精品电影| 亚洲最快最全在线视频| 欧美三级在线| 午夜精品成人在线| 亚洲一区二区不卡免费| 国产午夜精品在线观看| 含羞草久久爱69一区| 亚洲欧洲在线看| 国产精品99久久久久久久久久久久| 亚洲欧美国内爽妇网| 国产精品久久久久影院色老大| 久久不见久久见免费视频1| 国产农村妇女毛片精品久久莱园子| 最新高清无码专区| 欧美午夜宅男影院在线观看| 国产精品青草综合久久久久99| 影音先锋日韩精品| 亚洲欧美日韩一区在线| 久久综合九色综合欧美就去吻| 9l国产精品久久久久麻豆| 国产精品第一页第二页第三页| 久久综合久久综合九色| 欧美一二三区精品| 欧美日韩在线播放一区二区| av成人免费观看| 亚洲国产精品福利| 久久在线视频在线| 狠狠色综合播放一区二区| 欧美成人69av| 牛人盗摄一区二区三区视频| 欧美va日韩va| 国产精品乱码一区二三区小蝌蚪| 国产精品免费看片| 中日韩美女免费视频网址在线观看| 蜜桃av噜噜一区二区三区| 久久久精品五月天| 国产精品久久久久久久久久尿| 国产午夜精品久久久久久免费视| 亚洲理伦电影| 欧美欧美午夜aⅴ在线观看| 精品盗摄一区二区三区| 国产伦精品一区二区三区视频孕妇| 欧美日韩国产综合一区二区| 欧美一二三视频| 欧美看片网站| 欧美在线观看视频一区二区| 欧美久久久久中文字幕| 欧美日在线观看| 午夜欧美精品久久久久久久| 亚洲黄色免费电影| 国产综合激情| 99视频国产精品免费观看| 国产亚洲精品激情久久| 欧美伦理影院| 激情丁香综合| 国产精品国产a级| 久久阴道视频| 欧美日韩xxxxx| 欧美日本国产精品| 欧美视频在线观看视频极品| 狠狠综合久久av一区二区老牛| 久久精品亚洲一区二区三区浴池| 欧美一区观看| 亚洲国产免费看| 国产精品白丝av嫩草影院| 欧美日韩国产天堂| 久久国产精品亚洲va麻豆| 国产偷久久久精品专区| 国产午夜精品一区二区三区欧美| 久久综合九九| 国产一区二区三区最好精华液| 欧美视频二区| 国产性天天综合网| 一区二区三欧美| 中文一区字幕| 亚洲视频 欧洲视频| 欧美成人精品三级在线观看| 麻豆成人91精品二区三区| 亚洲国产精品va在线观看黑人| 国产欧美一区二区三区久久人妖| 国产精品久久久久久久久久免费看| 久久不见久久见免费视频1| 亚洲视频一起| 欧美精品国产精品日韩精品| 国产免费观看久久黄| 裸体歌舞表演一区二区| 欧美色欧美亚洲高清在线视频| 国产欧美一区二区精品秋霞影院| 亚洲最新视频在线播放| 欧美日韩直播| 欧美国产日韩亚洲一区| 一本久久精品一区二区| 亚洲电影专区| 国产精品国产三级国产普通话99| 性欧美1819性猛交| 国产日本欧美一区二区三区在线| 亚洲精品小视频| 欧美日韩精品中文字幕| 欧美美女日韩| 欧美在线观看一二区| 国产午夜精品一区二区三区视频| 欧美日韩另类丝袜其他| 日韩视频久久| 亚洲国产日本| 国产在线日韩| 国产精品自拍网站| 亚洲午夜视频在线| 国产婷婷色综合av蜜臀av| 国产精品久久波多野结衣| 亚洲欧美在线一区二区| 欧美激情精品久久久六区热门| 欧美一区二区三区在线观看视频| 亚洲乱亚洲高清| 亚洲男人天堂2024| 亚洲一区3d动漫同人无遮挡| 精品51国产黑色丝袜高跟鞋| 亚洲国产专区| 日韩一区二区精品在线观看| 久久婷婷久久一区二区三区| 欧美福利视频在线观看| 亚洲国产精品一区二区第四页av| 亚洲裸体在线观看| 欧美三级特黄| 亚洲欧美欧美一区二区三区| 亚洲风情在线资源站| 欧美午夜精品久久久久久久| 欧美在线中文字幕| 国产麻豆午夜三级精品| 狠狠色综合色综合网络| 久久久亚洲国产美女国产盗摄| 黑人极品videos精品欧美裸| 99热这里只有精品8| 日韩视频在线观看免费| 欧美在线影院| 亚洲在线一区二区| 欧美a级在线| 国产一区二区精品| 国产色综合网| 免费观看30秒视频久久| 亚洲综合999| 国产精品亚洲аv天堂网| 亚洲一区二区三区精品在线| 久久精品水蜜桃av综合天堂| 国产一区二区三区高清播放| 久久久久久久国产| 久久久精品国产免大香伊| 精品成人在线观看| 欧美日韩精品在线观看| 欧美www视频在线观看| 国产精品xnxxcom| 久久久久综合网| 亚洲日本成人网| 国产欧美精品xxxx另类| 亚洲精品美女91| 尤物在线精品| 亚洲美洲欧洲综合国产一区| 久久综合电影一区| 免费成人av在线看| 一区二区三区在线免费播放| 久久人体大胆视频| 国内精品**久久毛片app| 国产日韩欧美精品| 亚洲色图在线视频| **网站欧美大片在线观看| 这里只有精品视频在线| 久久亚洲精品伦理| 欧美人妖另类| 亚洲电影成人| 亚洲欧美在线一区| 激情欧美一区二区三区在线观看| 欧美福利视频| 欧美亚洲在线观看| 一区二区三区在线视频免费观看| 欧美日韩国产在线播放网站| 亚洲精品国产精品国自产观看浪潮| 在线观看视频日韩| 亚洲国产日韩欧美在线99| 欧美亚洲第一区| 欧美大香线蕉线伊人久久国产精品| 亚洲观看高清完整版在线观看| 国产在线精品一区二区夜色| 久久影视精品| 欧美日韩影院| 久久免费视频这里只有精品| 亚洲婷婷在线| 国产美女精品免费电影| 欧美成人一区二区| 国产网站欧美日韩免费精品在线观看| 亚洲影院色无极综合| 欧美成人dvd在线视频| 99国产精品久久久久久久| 亚洲日韩欧美视频一区| 亚洲视频电影在线| 欧美激情区在线播放| 欧美日韩精品二区| 国产精品腿扒开做爽爽爽挤奶网站| 久色婷婷小香蕉久久| 国产乱码精品一区二区三区五月婷| 亚洲一级在线观看| 国产免费亚洲高清| 亚洲日本欧美在线| 亚洲精品一区二| 亚洲日本电影在线| 亚洲综合欧美日韩| 国产精品免费一区二区三区观看| 国产欧美va欧美不卡在线| 亚洲欧美日韩直播| 亚洲国内高清视频| 激情欧美一区二区| 国产综合久久久久影院| 国产日韩欧美一区二区三区四区| 久久综合久色欧美综合狠狠| 国产精品视频不卡| 欧美影院午夜播放| 在线观看欧美视频| 国产欧美精品在线播放| 欧美视频四区| 国产亚洲美州欧州综合国| 国产精品国产三级国产专播品爱网| 亚洲女同同性videoxma| 欧美日韩三级电影在线| 欧美黄色一区二区| 在线视频免费在线观看一区二区| 在线欧美影院| 欧美午夜精品伦理| 国产精品va在线播放我和闺蜜| 亚洲综合国产| 国产日韩欧美制服另类| 久久久久久久欧美精品| 国产精品白丝jk黑袜喷水| 久久久www免费人成黑人精品| 国产一区二区三区久久精品| 亚洲国产精品专区久久| 久久婷婷色综合| 欧美国产精品人人做人人爱| 亚洲午夜三级在线| 国产精品麻豆欧美日韩ww| 久久综合婷婷| 欧美日韩在线播放一区二区|