黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

解決spring @ControllerAdvice處理異常無法正確匹配自定義異常

瀏覽:2日期:2023-07-09 16:46:58

首先說結論,使用@ControllerAdvice配合@ExceptionHandler處理全局controller的異常時,如果想要正確匹配自己的自定義異常,需要在controller的方法上拋出相應的自定義異常,或者自定義異常繼承RuntimeException類。

問題描述:

1、在使用@ControllerAdvice配合@ExceptionHandler處理全局異常時,自定義了一個AppException(extends Exception),由于有些全局的參數需要統一驗證,所以在所有controller的方法上加一層AOP校驗,如果參數校驗沒通過也拋出AppException

2、在@ControllerAdvice標記的類上,主要有兩個@ExceptionHandler,分別匹配AppException.class和Throwable.class。

3、在測試時,由于全局AOP的參數校驗沒通過,拋出了AppException,但是發現這個AppException被Throwable.class匹配到了,而不是我們想要的AppException.class匹配上。

分析過程:一階段

開始由于一直測試的兩個不同的請求(一個通過swagger,一個通過游覽器地址輸入,兩個請求比較相似,我以為是同一個請求),一個方法上拋出了AppException,一個沒有,然后發現這個問題時現時不現,因為無法穩定復現問題,我猜測可能是AppException出了問題,所以我修改了AppException,將其父類改為了RuntimeException,然后發現問題解決了

二階段

問題解決后,我又思考了下為啥會出現這種情況,根據java的異常體系來說,無論是繼承Exception還是RuntimeException,都不應該會匹配到Throwable.class上去。

我再次跟蹤了異常的執行過程,粗略的過了一遍,發現在下面這個位置出現了差別:

catch (InvocationTargetException ex) { // Unwrap for HandlerExceptionResolvers ... Throwable targetException = ex.getTargetException(); if (targetException instanceof RuntimeException) {throw (RuntimeException) targetException; } else if (targetException instanceof Error) {throw (Error) targetException; } else if (targetException instanceof Exception) {throw (Exception) targetException; } else {String text = getInvocationErrorMessage('Failed to invoke handler method', args);throw new IllegalStateException(text, targetException); }}

成功的走的是Exception,失敗的走的是RuntimeException。

這時候到了@ControllerAdvice標記的類時就會出問題了,因為繼承AppException是和RuntimeException是平級,所以如果走runtimeException這個判斷條件拋出去的異常注定就不會被AppException匹配上。

這時候再仔細對比下異常類型,可以發現正確的那個異常類型時AppException,而錯誤的那個異常類型時java.lang.reflect.UndeclaredThrowableException,內部包著AppException。

JDK的java doc是這么解釋UndeclaredThrowableException的:如果代理實例的調用處理程序的 invoke 方法拋出一個經過檢查的異常(不可分配給 RuntimeException 或 Error 的 Throwable),且該異常不可分配給該方法的throws子局聲明的任何異常類,則由代理實例上的方法調用拋出此異常。

因為AppException繼承于Exception,所以代理拋出的異常就是包著AppException的UndeclaredThrowableException,在@ControllerAdvice匹配的時候自然就匹配不上了。

而當AppException繼承于RuntimeException時,拋出的異常依舊是AppException,所以能夠被匹配上。

結論:所以解決方法有兩種:AppException繼承RuntimeException或者Controller的方法拋出AppException異常。

Spring的@ExceptionHandler和@ControllerAdvice統一處理異常

之前敲代碼的時候,避免不了各種try…catch,如果業務復雜一點,就會發現全都是try…catch

try{ ..........}catch(Exception1 e){ ..........}catch(Exception2 e){ ...........}catch(Exception3 e){ ...........}

這樣其實代碼既不簡潔好看 ,我們敲著也煩, 一般我們可能想到用攔截器去處理, 但是既然現在Spring這么火,AOP大家也不陌生, 那么Spring一定為我們想好了這個解決辦法.果然:

@ExceptionHandler

源碼

//該注解作用對象為方法@Target({ElementType.METHOD})//在運行時有效@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface ExceptionHandler { //value()可以指定異常類 Class<? extends Throwable>[] value() default {};}

@ControllerAdvice

源碼

@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented//bean對象交給spring管理生成@Componentpublic @interface ControllerAdvice { @AliasFor('basePackages') String[] value() default {}; @AliasFor('value') String[] basePackages() default {}; Class<?>[] basePackageClasses() default {}; Class<?>[] assignableTypes() default {}; Class<? extends Annotation>[] annotations() default {};}

從名字上可以看出大體意思是控制器增強

所以結合上面我們可以知道,使用@ExceptionHandler,可以處理異常, 但是僅限于當前Controller中處理異常,

@ControllerAdvice可以配置basePackage下的所有controller. 所以結合兩者使用,就可以處理全局的異常了.

一、代碼

這里需要聲明的是,這個統一異常處理類,也是基于ControllerAdvice,也就是控制層切面的,如果是過濾器拋出的異常,不會被捕獲!!!

在@ControllerAdvice注解下的類,里面的方法用@ExceptionHandler注解修飾的方法,會將對應的異常交給對應的方法處理。

@ExceptionHandler({IOException.class})public Result handleException(IOExceptione) { log.error('[handleException] ', e); return ResultUtil.failureDefaultError(); }

比如這個,就是捕獲IO異常并處理。

廢話不多說,代碼:

package com.zgd.shop.core.exception;import com.zgd.shop.core.error.ErrorCache;import com.zgd.shop.core.result.Result;import com.zgd.shop.core.result.ResultUtil;import lombok.extern.slf4j.Slf4j;import org.apache.commons.lang3.StringUtils;import org.springframework.http.HttpStatus;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.validation.BindException;import org.springframework.validation.BindingResult;import org.springframework.validation.FieldError;import org.springframework.web.HttpMediaTypeNotSupportedException;import org.springframework.web.HttpRequestMethodNotSupportedException;import org.springframework.web.bind.MethodArgumentNotValidException;import org.springframework.web.bind.MissingServletRequestParameterException;import org.springframework.web.bind.annotation.ControllerAdvice;import org.springframework.web.bind.annotation.ExceptionHandler;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.ResponseStatus;import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;import javax.validation.ConstraintViolation;import javax.validation.ConstraintViolationException;import javax.validation.ValidationException;import java.util.Set;/** * GlobalExceptionHandle * 全局的異常處理 * * @author zgd * @date 2019/7/19 11:01 */@ControllerAdvice@ResponseBody@Slf4jpublic class GlobalExceptionHandle { /** * 請求參數錯誤 */ private final static String BASE_PARAM_ERR_CODE = 'BASE-PARAM-01'; private final static String BASE_PARAM_ERR_MSG = '參數校驗不通過'; /** * 無效的請求 */ private final static String BASE_BAD_REQUEST_ERR_CODE = 'BASE-PARAM-02'; private final static String BASE_BAD_REQUEST_ERR_MSG = '無效的請求'; /** * 頂級的異常處理 * * @param e * @return */ @ResponseStatus(HttpStatus.OK) @ExceptionHandler({Exception.class}) public Result handleException(Exception e) { log.error('[handleException] ', e); return ResultUtil.failureDefaultError(); } /** * 自定義的異常處理 * * @param ex * @return */ @ResponseStatus(HttpStatus.OK) @ExceptionHandler({BizServiceException.class}) public Result serviceExceptionHandler(BizServiceException ex) { String errorCode = ex.getErrCode(); String msg = ex.getErrMsg() == null ? '' : ex.getErrMsg(); String innerErrMsg; String outerErrMsg; if (BASE_PARAM_ERR_CODE.equalsIgnoreCase(errorCode)) { innerErrMsg = '參數校驗不通過:' + msg; outerErrMsg = BASE_PARAM_ERR_MSG; } else if (ex.isInnerError()) { innerErrMsg = ErrorCache.getInternalMsg(errorCode); outerErrMsg = ErrorCache.getMsg(errorCode); if (StringUtils.isNotBlank(msg)) {innerErrMsg = innerErrMsg + ',' + msg;outerErrMsg = outerErrMsg + ',' + msg; } } else { innerErrMsg = msg; outerErrMsg = msg; } log.info('【錯誤碼】:{},【錯誤碼內部描述】:{},【錯誤碼外部描述】:{}', errorCode, innerErrMsg, outerErrMsg); return ResultUtil.failure(errorCode, outerErrMsg); } /** * 缺少servlet請求參數拋出的異常 * * @param e * @return */ @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({MissingServletRequestParameterException.class}) public Result handleMissingServletRequestParameterException(MissingServletRequestParameterException e) { log.warn('[handleMissingServletRequestParameterException] 參數錯誤: ' + e.getParameterName()); return ResultUtil.failure(BASE_PARAM_ERR_CODE, BASE_PARAM_ERR_MSG); } /** * 請求參數不能正確讀取解析時,拋出的異常,比如傳入和接受的參數類型不一致 * * @param e * @return */ @ResponseStatus(HttpStatus.OK) @ExceptionHandler({HttpMessageNotReadableException.class}) public Result handleHttpMessageNotReadableException(HttpMessageNotReadableException e) { log.warn('[handleHttpMessageNotReadableException] 參數解析失敗:', e); return ResultUtil.failure(BASE_PARAM_ERR_CODE, BASE_PARAM_ERR_MSG); } /** * 請求參數無效拋出的異常 * * @param e * @return */ @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({MethodArgumentNotValidException.class}) public Result handleMethodArgumentNotValidException(MethodArgumentNotValidException e) { BindingResult result = e.getBindingResult(); String message = getBindResultMessage(result); log.warn('[handleMethodArgumentNotValidException] 參數驗證失敗:' + message); return ResultUtil.failure(BASE_PARAM_ERR_CODE, BASE_PARAM_ERR_MSG); } private String getBindResultMessage(BindingResult result) { FieldError error = result.getFieldError(); String field = error != null ? error.getField() : '空'; String code = error != null ? error.getDefaultMessage() : '空'; return String.format('%s:%s', field, code); } /** * 方法請求參數類型不匹配異常 * * @param e * @return */ @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({MethodArgumentTypeMismatchException.class}) public Result handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) { log.warn('[handleMethodArgumentTypeMismatchException] 方法參數類型不匹配異常: ', e); return ResultUtil.failure(BASE_PARAM_ERR_CODE, BASE_PARAM_ERR_MSG); } /** * 請求參數綁定到controller請求參數時的異常 * * @param e * @return */ @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({BindException.class}) public Result handleHttpMessageNotReadableException(BindException e) { BindingResult result = e.getBindingResult(); String message = getBindResultMessage(result); log.warn('[handleHttpMessageNotReadableException] 參數綁定失敗:' + message); return ResultUtil.failure(BASE_PARAM_ERR_CODE, BASE_PARAM_ERR_MSG); } /** * javax.validation:validation-api 校驗參數拋出的異常 * * @param e * @return */ @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({ConstraintViolationException.class}) public Result handleServiceException(ConstraintViolationException e) { Set<ConstraintViolation<?>> violations = e.getConstraintViolations(); ConstraintViolation<?> violation = violations.iterator().next(); String message = violation.getMessage(); log.warn('[handleServiceException] 參數驗證失敗:' + message); return ResultUtil.failure(BASE_PARAM_ERR_CODE, BASE_PARAM_ERR_MSG); } /** * javax.validation 下校驗參數時拋出的異常 * * @param e * @return */ @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler({ValidationException.class}) public Result handleValidationException(ValidationException e) { log.warn('[handleValidationException] 參數驗證失敗:', e); return ResultUtil.failure(BASE_PARAM_ERR_CODE, BASE_PARAM_ERR_MSG); } /** * 不支持該請求方法時拋出的異常 * * @param e * @return */ @ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED) @ExceptionHandler({HttpRequestMethodNotSupportedException.class}) public Result handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) { log.warn('[handleHttpRequestMethodNotSupportedException] 不支持當前請求方法: ', e); return ResultUtil.failure(BASE_BAD_REQUEST_ERR_CODE, BASE_BAD_REQUEST_ERR_MSG); } /** * 不支持當前媒體類型拋出的異常 * * @param e * @return */ @ResponseStatus(HttpStatus.UNSUPPORTED_MEDIA_TYPE) @ExceptionHandler({HttpMediaTypeNotSupportedException.class}) public Result handleHttpMediaTypeNotSupportedException(HttpMediaTypeNotSupportedException e) { log.warn('[handleHttpMediaTypeNotSupportedException] 不支持當前媒體類型: ', e); return ResultUtil.failure(BASE_BAD_REQUEST_ERR_CODE, BASE_BAD_REQUEST_ERR_MSG); }}

至于返回值,就可以理解為controller層方法的返回值,可以返回@ResponseBody,或者頁面。我這里是一個@ResponseBody的Result<>,前后端分離。

我們也可以自己根據需求,捕獲更多的異常類型。

包括我們自定義的異常類型。比如:

package com.zgd.shop.core.exception;import lombok.Data;/** * BizServiceException * 業務拋出的異常 * @author zgd * @date 2019/7/19 11:04 */@Datapublic class BizServiceException extends RuntimeException{ private String errCode; private String errMsg; private boolean isInnerError; public BizServiceException(){ this.isInnerError=false; } public BizServiceException(String errCode){ this.errCode =errCode; this.isInnerError = false; } public BizServiceException(String errCode,boolean isInnerError){ this.errCode =errCode; this.isInnerError = isInnerError; } public BizServiceException(String errCode,String errMsg){ this.errCode =errCode; this.errMsg = errMsg; this.isInnerError = false; } public BizServiceException(String errCode,String errMsg,boolean isInnerError){ this.errCode =errCode; this.errMsg = errMsg; this.isInnerError = isInnerError; }}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 中文av一区二区三区 | 少妇性俱乐部纵欲狂欢电影 | 自拍 另类 综合 欧美小说 | mm131尤物让人欲罢不能日本 | 日韩成人短视频 | 精品在线观看视频 | 99热国产 | 亚洲日本韩国欧美云霸高清 | 久草在线青青草 | 精品久久久免费视频 | 亚洲精品久久久久中文字幕m男 | 一个人看的www片免费高清视频 | 欧美区日韩区 | 久久综合久久鬼色 | 天堂资源 | 日韩精品一区二区三区在线视频 | 精品久久8x国产免费观看 | 毛片无码一区二区三区a片视频 | 国产精品77777竹菊影视小说 | 亚洲无人区一线二线三线 | 九九视频在线观看视频6 | 日韩亚洲欧美在线 | 国产免费一区二区三区四在线播放 | 日本少妇做爰xxxⅹ漫 | 免费99视频 | 最近中文字幕在线mv视频在线 | av女人的天堂 | 99精品偷拍视频一区二区三区 | 国产黄色成人 | 欧美日韩中文在线观看 | 日本专区在线 | 成人午夜性视频 | 精品一区二区三区激情在线欧美 | 国产破处av | 国产精品久久久久久久久久久久 | 免费成人在线观看视频 | 久操视频免费在线观看 | 免费国产在线精品一区二区三区 | 国产一区二区三区四 | 日韩精品视频在线看 | 伊甸园永久入口www 伊久久 | 9久久久| 欧美综合在线观看 | 欧美性猛交xxxx乱大交蜜桃 | 久久久久夜夜夜精品国产 | 91黄瓜视频| 欧美大片免费观看在线观看网站推荐 | 国产成人精品男人的天堂 | 香蕉网站在线观看 | 久久久精品久久久久久 | 亚洲女同在线观看 | 亚洲精品一品区二品区三品区 | 亚洲欧美精品无码一区二区三区 | 麻豆精品久久 | 欧美又大又黄又粗高潮免费 | 少妇无码太爽了在线播放 | 欧美日韩1区2区3区 欧美日韩3p | 国产免费视频一区二区裸体 | 在线播放a | 国产精品视频一区二区噜噜 | 欧美激情亚洲激情 | 国产精品23p| 色综合久久久久久久久五月 | 四虎最新站名点击进入 | 久久加勒比亚洲精品一区 | 国产在线不卡一区二区三区 | 国产伦精品一区二区三区四区视频_ | 少妇久久久久久被弄到高潮 | 中文字母av | 91porn国产成人 | 又粗又大又硬又长又爽 | 精品一区二区三区四区五区六区 | 日批在线播放 | 九九九国产 | 日韩欧美精品在线观看 | 高清性色生活片97 | aaaaa级少妇高潮大片免费看 | 中文字幕人成无码人妻综合社区 | 在线观看91精品国产入口 | 久久激情影院 | 日韩精品免费一区二区在线观看 | 羞羞的网站在线观看 | 国产粉嫩呻吟一区二区三区 | 午夜影院黄 | 丰满爆乳在线播放 | 国产av综合第一页 | 天天干视频在线 | 伊人久久大香线蕉av色婷婷色 | 久久中文字幕一区 | av片在线观看网站 | 久久国产成人午夜av浪潮 | 香港三日本三级少妇66 | 天天操天天射天天爱 | 久久久久久久久久国产精品 | 人妻激情文学 | 中文在线观看免费高清 | 日韩久久一区 | 这里只有久久精品 | 性欧美videos高清精品 | 顶级欧美熟妇xx | 特大黑人巨交吊性xxxxhd | 男人巨茎大战欧美白妇 | 免费观看日韩毛片 | 夜夜高潮夜夜爽精品欧美做爰 | 一乃葵在线 | 男女做那个的全过程 | 四虎成人精品无码永久在线 | 日本老小玩hd老少配 | 国产痴汉av久久精品 | 日韩极品视频在线观看 | 亚洲国产欧洲综合997久久, | 欧美 日韩 国产 成人 在线观看 | 精品入口麻豆88视频 | 夜夜骑夜夜操 | 人与野鲁毛片在线视频 | 欧美日韩一区二区三区不卡 | 亚洲网站在线观看 | 激情内射日本一区二区三区 | 国产精品偷伦视频免费手机播放 | 97在线观看播放 | 日本欧美一本 | 黄色片免费在线播放 | 日韩欧美一区二区在线观看视频 | 色狠久 | 女人让男人桶爽30分钟 | 毛片小视频 | 97超碰在线资源 | 夫の上司に犯波多野结衣853 | 狠狠色网站 | 女性向av片在线观看免费 | 中文字幕免费观看视频 | 天天做日日干 | 337p日本欧洲亚洲大胆精蜜臀 | 精品国产依人香蕉在线精品 | 免费看日批 | 香蕉av在线| av美女在线观看 | 亚洲中文字幕精品一区二区三区 | 中文字幕一区二区三区久久蜜桃 | 青青草成人影视 | 久久综合伊人 | 九九热精品视频在线 | 国产精品区在线 | 国产成人综合色在线观看网站 | 色婷婷噜噜久久国产精品12p | xfplay2023成人资源站 | 毛片女人18片毛片女人免费 | 99精品国产高清一区二区麻豆 | 日本少妇做爰xxxⅹ漫 | 精品久久久久久久久久岛国gif | 欧美日韩亚洲系列 | 国产片自拍| 日韩精品毛片无码一区到三区 | 欧美一级大片免费 | 亚洲在线不卡 | 国产v亚洲v天堂无码 | av在线播放器 | 国产第一页在线 | 一区二区三区中文字幕 | 国产一区二区三区a | 日本高清www免费视频 | 国产女爽爽视频精品免费 | 福利小视频在线观看 | 久久久久久久黄色 | 四虎精品在线观看 | a级特黄的片子 | 欧美激情导航 | 亚洲人成人无码www 国产亚洲精品久久久久秋霞 | av5566| 可以在线观看av的网站 | 久久成人影院精品777 | 日日干干 | 亚洲国产精品无码久久98 | 十八禁在线观看视频播放免费 | 日本艳妓bbw高潮一19 | 国产爆操视频 | 久久免费国产精品 | 亚洲中文精品久久久久久不卡 | 亚洲成a人片在线 | 亚洲最大色大成人av | 一本一道av无码中文字幕麻豆 | 国产无套内谢普通话对白91 | 鲁鲁鲁爽爽爽在线视频观看 | 桃色在线视频 | 久青草影院 | 伊人久久大香线 | 亚洲青青草原 | 日本少妇翘臀啪啪无遮挡动漫 | 97日本xxxxxxxxx18 97日韩精品 | 亚洲成人国产精品 | 国产精品suv一区二区三区 | 欧美黄色大片网站 | 日本一卡二卡四卡无卡乱码视频免费 | 免费av网址在线 | 国产3p在线播放 | 亚洲国产中文在线 | 黄色变态网站 | 辟里啪啦国语版免费观看 | 亚洲人成综合网站7777香蕉 | 欧美绝顶高潮抽搐喷水合集 | 中文字幕女教师julia视频 | 丰满女人又爽又紧又丰满 | 国产免费艾彩sm调教视频 | 国产精品高潮呻吟av久久4虎 | 熟妇五十路六十路息与子 | 亚洲色大网站www永久网站 | 国产视频一区二区在线 | 日韩欧美日韩 | 国产成人av一区二区在线观看 | 亚洲精品成a人在线观看 | 色男人在线 | 国产视频xxxx | 草草影院网址 | 美足av| 天天操天天操天天操天天操 | 全国最大的成人网 | 97精品国产97久久久久久春色 | 成年人在线免费 | 亚洲精品自拍 | 日本xxxxx高潮少妇 | 久久精品国产免费观看 | 爱爱网站免费 | 美国毛片av | 国产精品v亚洲精品v日韩精品 | 99久久精品国产第一页 | 欧美在线免费看 | 国产欧美日韩精品在线 | 国产情侣酒店自拍 | 视频免费精品 | 欧美资源| 免费在线观看a级片 | 欧美午夜精品久久久久久浪潮 | 亚洲午夜精品 | av大片免费看| 狠狠色综合网站久久久久久久 | 精品久久久久久久久久久久久 | 国产成人免费片在线观看 | 一本大道香一蕉久 | 久久久久成人网 | 欧美日韩精品在线观看 | 精品毛片乱码1区2区3区 | 久久免费播放 | 成人免费观看在线视频 | 成年人免费看视频 | 国内精品久久久久久无码不卡 | 91九色精品 | 夜夜躁狠狠躁夜躁2021鲁大师 | 4438x亚洲最大| 99视频在线 | 亚洲男人的天堂在线观看 | 嫩草网站在线观看 | 国产午夜激情视频 | 欧美日本韩国一区 | 少妇乳大丰满太紧 | 久久中文字幕一区 | 日韩在线一区二区三区免费视频 | 日本成a人片在线播放 | 国产成人成网站在线播放青青 | 波多野结衣视频网址 | 19禁国产精品福利视频 | 在线 | 一区二区三区 | 亚洲精品综合五月久久小说 | 激情综合五月 | 性一交一乱一色一免费无遮挡 | 91网站在线播放 | 国产成人精品视频一区二区不卡 | 日韩视频在线免费 | 韩国av一区二区三区 | 午夜精品一区二区三区在线播放 | 啪啪资源| 中文字幕在线播放第一页 | 91麻豆精品国产91久久久更新时间 | 日本一本高清视频 | 伊人激情 | 日本肉体xxⅹ裸体交 | 亚洲欧美影视 | 欧美一区二区在线观看视频 | 青青视频免费在线观看 | 超碰97在线播放 | 国产精品亚洲一区二区三区喷水 | 97在线播放视频 | 国产乱人伦 | 欧美激情综合色综合啪啪五月 | a级毛片蜜桃成熟时2在线播放 | 国产精选中文字幕 | 男女做aj视频免费的网站 | 99热这里只有精 | 成人黄色激情网 | 精品一区二区三区无码免费直播 | 中文字幕在线免费视频 | 国产二区精品 | 日本人与黑人做爰视频 | 我不卡午夜 | 免费不卡毛片 | 一区二区三区四区在线播放 | 国产伦子伦对白视频 | 国产美女炮机视频 | 国产视频aaa| 欧美激情精品久久久久久免费 | 美女扒开尿口让男人桶 | 中日韩高清无专码区2021 | 国产美女明星三级做爰 | 国产91福利在线观看 | jzzijzzij日本成熟丰满少妇 | 天堂网2014| 天堂网www中文在线 伊人久久大香线蕉综合网站 | 另类小说婷婷 | 少妇久久久久久久久久 | 精品人妻无码区在线视频 | 国产精品久久久久高潮 | 久久精品一区二区三区四区毛片 | 日日骚视频 | 国产三级a | 国产成a人亚洲精品无码樱花 | 大香伊蕉在人线国产av | 我要操av | 深夜在线 | 久久婷婷麻豆国产91天堂 | 国产麻豆一精品一男同 | 伊人av影院 | 偷偷久久 | 热久久精品免费视频 | 日韩在线免费观看视频 | 色免费看| 中文字幕精品无码一区二区三区 | 日韩欧美一区二区在线 | 看黄色大片 | 天天爽夜夜爽夜夜爽精品 | 激情播播网| 成人久久久精品乱码一区二区三区 | 国产av天堂无码一区二区三区 | 6699嫩草久久久精品影院 | 岛国av动作片 | 天天躁日日摸久久久精品 | 欧美日韩卡一卡二 | 天堂中文最新版在线中文 | 欧美精品一区二区三区久久久竹菊 | 国产sm重味一区二区三区 | 女模特的呻吟bd | 91美女在线视频 | 亚洲福利视频网 | jyzz中国jizz十八岁免费 | 亚洲jlzzjizz少妇 | www日韩在线观看 | 精品国产人妻一区二区三区 | 99久久精品费精品国产一区二区 | 国产亚洲欧美在线 | 欧美精品成人 | 97人妻精品一区二区三区 | 国产寡妇精品久久久久久 | 黄页在线播放 | 亚洲欧美一级久久精品国产特黄 | 欧美视频一区二区在线观看 | 日日噜噜夜夜狠狠视频 | 成人在线观看av | 久久精品片 | 日产久久视频 | 伊人伊成久久人综合网站 | 成人片在线看 | 九色porny丨国产首页注册 | 天天射天天操天天干 | 欧美白人最猛性xxxxx | 一区二区在线 | 欧洲 | 中文字幕高潮 | 少妇高潮喷水久久久久久久久久 | 国产午夜精品久久久久久免费视 | 揉捏奶头高潮呻吟视频 | 亚洲成a人片在线观看无码 97se亚洲精品一区 | 国产欧美第一页 | 又粗又爽又猛高潮的在线视频 | 国产偷v国产偷v亚洲 | 最新午夜综合福利视频 | 夜夜高潮夜夜爽夜夜爱爱 | 亚洲综合欧美在线一区在线播放 | 精品国产69 | 精品国产一区二区三区av爱情岛 | 又黄又爽又刺激久久久久亚洲精品 | 99热在线免费观看 | 国产91精 | 久久黄网站| 日韩有码视频在线 | 东京道一本热中文字幕 | 亚洲国产精品久久久久久6q | 中国69av| 7777色鬼xxxⅹ欧美色妇 | 三级在线观看 | 性色欲情网站 | 亂倫近親相姦中文字幕 | 久久人妻无码一区二区 | 亚洲中文字幕精品一区二区三区 | 国产一区二区三区欧美 | 成人做受视频试看60秒 | 久久久亚洲裙底偷窥综合 | 男女男精品网站 | 亚洲国产一二三 | 黄色一级片视频 | 台湾午夜a级理论片在线播放 | 中文字幕一区不卡 | 四川骚妇无套内射舔了更爽 | 免费乱码人妻系列无码专区 | 少妇激情一区二区三区视频小说 | 国产igao为爱做激情在线观看 | 小罗莉极品一线天在线 | 少妇av一区二区 | 在线视频一区二区 | 污片网站在线观看 | 正在播放一区 | 国产精品久久久久久久久久不蜜月 | 青草影院内射中出高潮 | 色啪综合 | 山东熟女啪啪哦哦叫 | av毛片在线播放 | 91福利社区在线观看 | 精品国产依人香蕉在线精品 | 夜夜躁狠狠躁日日躁视频黑人 | 久久这里都是精品 | 国产日韩精品一区二区三区在线 | 亚洲精品乱码久久久久久久久久 | 337p亚洲精品色噜噜噜 | 亚洲精品乱码久久久久久日本 | 美女扒开奶罩露出奶头视频网站 | 国产成人久久777777 | 亚洲aⅴ无码专区在线观看春色 | 无码帝国www无码专区色综合 | 人妻无码熟妇乱又伦精品视频 | 欧美一卡二卡三卡 | 少妇精品久久久一区二区三区 | 少妇情理伦片丰满午夜在线观看 | 另类欧美亚洲 | 久久国产精品无码一区二区三区 | 亚洲婷婷在线观看 | 国内黄色一级片 | 色噜噜狠狠一区二区 | 欧美s码亚洲码精品m码 | 饥渴少妇色诱水电工 | 久久精品美女视频 | 国产第三区 | www日韩com| 亚洲m码 欧洲s码sss222 | 六月成人网 | 91在线网址 | 国模私拍大尺度裸体av | 日韩中文字幕在线观看 | 黄色网占| 久久成人免费视频 | 亚洲成av人片一区二区三区 | 亚洲精品区 | 久久91精品久久久久清纯 | 中文字幕人成乱码在线观看 | 日韩欧美午夜 | 福利一区二区 | 亚洲天堂2017无码 | 51精品国产人成在线观看 | 欧美韩国一区 | 国产一区中文字幕 | 色综合a怡红院怡红院 | 久久免费视频网站 | 亚洲精品国产拍在线 | 奇米影视7777久久精品 | 亚洲天堂网站 | 天天拍夜夜操 | 调教重口xx区一精品网站 | 国产精品久久久对白 | 在线视频自拍 | 久久97精品国产96久久小草 | 国产精品一区二区在线看 | 九九九九国产 | 继室辣文h1v1 | 色一欲一性一乱—区二区三区 | 欧美精品久久久久久久自慰 | 国产精品亚洲天堂 | 免费乱码人妻系列无码专区 | 国产免费午夜a无码v视频 | www.7788久久久久久久久 | 92看片淫黄大片看国产片 | 中文字幕视频一区二区 | 精品一区二区三区激情在线欧美 | 狠狠爱网站| 美女视频黄频a免费 | 后进极品圆润翘臀在线播放 | 国内自拍视频一区二区三区 | 日本www.小久久 | 国产精品午夜无码av体验区 | 白洁av| 欧美卡一卡二卡三 | 亚洲不卡av不卡一区二区 | 国产一区二区自拍视频 | 婷婷俺也去| 国产真实交换夫妇视频 | 中文字幕人妻色偷偷久久 | 夜夜看| 国产精品久久久久9999 | 欧美性猛交ⅹxxx乱大交妖精 | 亚洲欧美中文字幕在线一区 | 欧美成人va | 免费又黄又裸乳的视频 | 亚洲精品国产精品国自产 | 成人动漫在线观看 | 在线播放亚洲第一字幕 | 一区二区三区日韩视频在线观看 | 农民人伦一区二区三区剧情简介 | 天天av天天翘 | 一级不卡 | 精品无码三级在线观看视频 | 青青草社区 | 五月激情网站 | 免费精品无码av片在线观看 | 婷婷色网| 九九在线精品视频 | 欧美高清性xxxxhd | 国产xxxx高清在线观看 | 一区二区三区在线 | 欧 | 女性无套免费网站在线看动漫 | 免费男性肉肉影院 | 无码国产乱人伦偷精品视频 | 91看片黄色 | 国产精品扒开腿做爽爽爽视频 | 女人下边被添全过视频的网址 | 国产精品一区久久 | 精品黑人一区二区三区久久 | 俺来也俺来啦awww官网 | 日韩在线第一 | 狼人社区91国产精品 | 久久精品国产999大香线蕉 | 日本少妇翘臀后式gif动态图 | 成年女人色毛片 | 免费在线视频你懂的 | 精品久久久久久久久久久国产字幕 | 国内精品视频一区二区三区 | 国产精品久久九九 | 91蝌蚪91porny国语 | 亚洲色大成网站www永久一区 | 久久免费片 | 日本黄色中文字幕 | 六姐妹在线观看 | 日韩夜色| 26uuu日韩精品一区二区 | www.亚洲视频.com | 人与动性xxx视频 | 中文在线观看免费网站 | 国产精品情侣 | 国产美女操 | 国产精品久久久久久爽爽爽床戏 | 99这里精品 | 800av在线视频 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 美女高潮视频在线观看 | 国产网站黄色 | 中国东北少妇bbb真爽 | 欧美色图激情小说 | 国产丰满精品伦一区二区三级视频 | 国产免费爽爽视频 | 无码毛片视频一区二区本码 | 偷拍激情视频一区二区三区 | 91精品国产91久久久久久久久久久久 | 午夜免费国产体验区免费的 | 国内毛片毛片毛片毛片毛片毛片 | 国产va精品免费观看 | 五月天伊人网 | 日韩欧美一中文字暮视频 | 天天躁夜夜躁狠狠躁2021牛牛 | 狠狠色噜噜狠狠狠狠2021天天 | 亚洲国产久 | 免费在线观看污网站 | 国内精品国产成人国产三级粉色 | 亚洲色啦啦狠狠网站 | 在线天堂www在线国语对白 | 伊人精品视频 | 欧美黄色免费在线观看 | 国产精品揄拍一区二区久久国内亚洲精 | 人妻少妇av中文字幕乱码 | 毛片av免费 | 国产成人精品亚洲午夜麻豆 | www福利| 香蕉综合视频 | 国产精品推荐 | 女人被狂躁到高潮视频免费软件 | 成人三级图片 | 亚洲精品欧美综合四区 | 午夜久久福利 | 中文字幕aⅴ人妻一区二区 性色av免费网站 | 国产精品18久久久久久久久 | 欧美美女爱爱视频 | 国产香蕉尹人综合在线观看 | 宅女午夜福利免费视频 | 98色| 日本色网址| 男女下面一进一出无遮挡 | 玛雅精品福利视频在线导航 | 寡妇毛片一区二区三区 | 亚洲午夜一区二区三区 | 明日叶三叶 | 国产人妖cd在线看网站 | 亚洲清纯国产 | 女人大荫蒂毛茸茸视频 | 国产在线播放一区 | 国产人妻久久精品二区三区老狼 | 久久影库| 国产精品一区二区三区四 | 亚洲色成人www永久网站 | 欧美精品hd | 91免费观看视频在线 | 国产中文字幕av | 国产吞精囗交免费视频 | 亚洲精品乱码久久久久久花季 | 四虎黄色影院 | 亚洲乱码国产乱码精品精软件 | 中文字幕久热精品视频在线 | 亚洲综合少妇 | 精品一二三四 | 美女屁股眼视频网站 | 久久艹久久 | 天天摸天天做天天爽婷婷 | 97色在线观看免费视频 | 亚洲欧美综合精品久久成人 |