久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

解決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
相關文章:
主站蜘蛛池模板: 精品视频一区二区三区在线观看 | 五月天婷婷精品 | 伊人久久国产 | 伊人网网站 | 久久高清精品 | 国产成人久久 | 精品国产乱码久久久久久1区二区 | 国产69精品99久久久久久宅男 | 97伦理电影院 | 伊人狠狠 | 第一色在线 | 5060毛片 | 性色av一区二区三区免费看开蚌 | 欧美大片在线看免费观看 | 亚洲精品亚洲人成人网 | 国产综合区 | 亚洲永久免费 | 97碰碰碰 | 综合在线视频 | 成人精品视频99在线观看免费 | 亚洲成人二区 | 欧美日韩国产在线 | 亚州视频在线 | 国产一区二区三区高清 | 欧美精品在欧美一区二区少妇 | 啊v在线 | 国产一区二区三区四区在线观看 | 视频一区 国产精品 | 香蕉婷婷| 国产成人a亚洲精品 | 日韩成人在线电影 | 91精品国产99久久久久久红楼 | 亚洲一在线 | 国产精品1区2区 | 在线视频 亚洲 | japan23xxxxhd乱| 精品中文字幕一区二区 | 欧美久久成人 | 99热精品国产 | 国产不卡一二三区 | 国产精品99久久久久久久久久久久 | 久久伊人一区 | 国产精品免费观看 | 午夜精品久久久久久久男人的天堂 | a级黄色在线观看 | 欧美日一区二区 | 精品无人乱码一区二区三区 | 天天干天天看天天操 | 欧美a网| bxbx成人精品一区二区三区 | 亚洲一区二区三区在线观看免费 | 成av人在线 | 久久九九这里只有精品 | 91精品欧美久久久久久久 | 亚洲精品国产第一综合99久久 | 色噜噜色综合 | 可以免费观看的av片 | 亚洲伊人久久综合 | 国内精品视频在线观看 | 国产美女福利在线 | 欧美久久久 | 日本三级在线观看中文字 | 精品2区| 色综久久 | 在线播放黄色片网站 | 日日干夜夜操 | 免费av毛片 | 男女免费在线观看视频 | 一区二区三区精品视频 | 欧美日韩精品久久久 | 蜜桃一区二区 | www久久九| 欧美黑人巨大xxx极品 | 国产成人精品高清久久 | 国产精品久久久99 | 四虎动漫| 国产日韩高清在线 | 国产精品视频免费观看 | 中文字幕视频在线免费观看 | 久久精品一区二区三区中文字幕 | 成人免费观看男女羞羞视频 | 国产精品久久久久久久久久久免费看 | 成人在线看片网站 | 日韩福利视频 | 欧美色综合 | 精品人成| 久久国产精品久久 | 91 在线观看| 日韩电影一区二区在线观看 | av影片在线播放 | 激情毛片| 国产精品成人国产乱一区 | 午夜a v电影 | 日韩在线不卡 | 黄桃av| h视频免费在线 | 亚洲人成人一区二区在线观看 | 欧美伦理电影一区二区 | 久久久久久久国产 | 欧美日本精品 | 亚洲精品乱码久久久久久麻豆不卡 | 91国产精品 | 久久精品亚洲精品 | 91在线看 | 欧美激情欧美激情在线五月 | 亚洲a网 | 亚洲精品99 | 91精品一区二区三区久久久久久 | 国产精品视频一区二区三区四蜜臂 | 美女毛片免费看 | 午夜国产精品视频 | 成人免费在线播放 | 亚洲毛片在线观看 | 国产精品久久久99 | 成人在线一区二区三区 | 国产精品一区二区三区在线 | av大片| 欧美综合久久久 | 毛片网子 | 日本精品一区二区三区在线观看视频 | 久久精品一区二区三区中文字幕 | 久久毛片| 日本久久精品视频 | a视频在线观看 | 成人在线播放网站 | 亚洲免费在线观看视频 | 亚洲国产精品一区二区第一页 | 国产精品免费看 | 国产高清精品一区二区三区 | 一区二区三区免费视频网站 | 欧美成人精品在线视频 | 欧美一级片在线观看 | 91久久精品久久国产性色也91 | 国产精品无码永久免费888 | 欧美激情一区二区三区 | 另类视频在线 | 精品视频久久 | 久久精品无码一区二区三区 | 日韩精品免费在线视频 | 欧美日韩国产在线播放 | 国产偷录视频叫床高潮对白 | 狠狠综合久久av一区二区小说 | 亚洲色图p | 欧美日韩一区在线观看 | 中文字幕一区二区三区乱码图片 | 日韩视频在线免费观看 | 久久精品国产99 | 最新日韩免费 | 日韩欧美国产成人一区二区 | 狠狠躁天天躁夜夜添人人 | 午夜精品久久久久久久白皮肤 | 国产视频黄在线观看 | 久久久亚洲综合 | 国产综合久久久久久鬼色 | 色网在线 | 伊人网电影 | 91精品国产综合久久久久久丝袜 | 日韩在线观看第一页 | 久久99国产精品久久99果冻传媒 | 国产视频一区二区三区四区 | 亚洲在线观看免费视频 | 成人精品久久久 | 亚州中文字幕蜜桃视频 | 国产精品一区二区在线观看 | 国产精品一区二区三区在线播放 | 99中文字幕 | 欧美精品久久久 | 免费黄色在线视频网址 | 国产成人一级毛片 | 日韩精品av一区二区三区 | 日韩精品视频在线观看免费 | 在线成人www免费观看视频 | 国产精品粉嫩白浆在线观看 | 免费在线观看国产 | 五月天婷婷免费视频 | 九色在线观看 | 999国内精品永久免费视频 | 色婷婷av久久久久久久 | 日本一区二区三区免费观看 | 91在线精品一区二区 | 亚洲成人精品在线 | 亚洲一区二区中文字幕 | 国产激情91久久精品导航 | 国产精品伦理 | 日韩精品一区二区三区老鸭窝 | 九九热re | 欧美久久久久 | 看毛片网站 | 99久久免费看视频 | 国产精品久久九九 | 在线观看欧美日韩 | 久久久久99精品国产片 | 国产大片黄色 | 成人午夜在线 | 精品国产一区二区三区久久影院 | 日本高清视频一区二区三区 | 成人免费网站视频 | 欧美成在线观看 | 亚洲视频欧美视频 | 久久网国产 | 欧美精品国产精品 | 亚洲一区中文字幕 | 一级大片免费观看 | 国产成人在线看 | 成人不卡| 国产aⅴ | 国产在线小视频 | 国产日韩中文字幕 | 国产综合在线视频 | 国产一区久久 | 夜夜操com | 日韩一区二区三区在线看 | 欧美日韩一区二区三区四区 | 国产免费天天看高清影视在线 | 中文字幕成人av | 欧美综合久久 | 特级做a爰片毛片免费看108 | 色婷婷综合网 | 久久国产精品免费一区二区三区 | 亚洲国产精品视频 | 成人h动漫精品一区二区器材 | 中文字幕在线观看的电影 | 天天干狠狠操 | 亚洲精品免费在线 | 日本免费电影一区 | 日韩精品视频三区 | 久久久久久黄 | 日韩视频在线观看不卡 | 国产精品久久久久久久久免费桃花 | 免费视频一区二区 | 夜夜天天操 | 久久久一区二区三区 | 免费日韩成人 | 亚洲一区二区av | 一区二区精品视频 | 黄色成人在线 | 久久99久久99精品 | 麻豆专区一区二区三区四区五区 | 国产中文字幕在线观看 | 亚洲日日操 | 午夜精品久久久久久久久 | 在线观看你懂的视频 | 深夜福利亚洲 | 91精品久久久久久 | 中文字幕日韩在线视频 | 99久久久99久久国产片鸭王 | 亚洲网站在线免费观看 | 久久9国产偷伦 | 97国产在线| 国产1页| 亚洲97 | 精品无人乱码一区二区三区的优势 | 久久久.com | 久久精品99 | 午夜国产精品成人 | 精品久久久一区 | 成人av观看 | 中文亚洲欧美 | 午夜男人天堂 | 男女全黄一级一级高潮免费看 | 91视频一区二区三区 | 欧美精品免费在线 | 日韩一级av毛片 | 精品国产一区二区在线 | 日本不卡免费新一二三区 | 久福利| 久久国产精品无码网站 | www.久久.com| 91视频精选| 国产91在线观看 | 91中文字幕 | 日韩一区二区在线免费 | 可以免费看黄的网站 | 成人免费淫片aa视频免费 | 亚洲精品日韩激情在线电影 | 亚洲视频免费观看 | 99精品欧美一区二区三区 | 久久伊人精品视频 | 91欧美| 羞羞视频在线网站观看 | 成人午夜视频在线观看 | 99精品国产高清一区二区麻豆 | 理论片一区| 国产婷婷色一区二区三区 | 欧美在线视频一区 | 亚洲视频三区 | 国产91免费在线 | 天堂√在线观看一区二区 | 午夜精品久久 | 毛片在线免费 | 成全视频免费观看在线看黑人 | 国产成人小视频 | www.久久久.com | 爱操av| 国产精品欧美日韩 | 麻豆一区一区三区四区 | 亚洲精品亚洲人成人网 | a免费在线 | 桃色视频在线播放 | 天天成人综合网 | 欧美性大战久久久久久久蜜臀 | 国产成人一区二区三区 | 国产在线播| 久久精品一二三四 | 亚洲电影二区 | 欧美激情国产日韩精品一区18 | 日本精品二区 | 国产精品久久久久久久久久久久久 | 欧美一区在线观看视频 | 日本久久精品视频 | 一区二区三区在线免费观看 | 99爱免费视频 | 亚洲精彩视频 | 国产亚洲一区二区三区在线观看 | 免费av电影网站 | 九九综合| 天天看天天爽 | 成av人片在线观看www | 亚洲二区在线视频 | 午夜影院在线观看 | 成人免费视频网站在线观看 | 国产野精品久久久久久久不卡 | 成人性生交大片免费看中文带字幕 | 国产精品久久久久久久岛一牛影视 | 婷婷国产精品 | h片在线| 天天综合网7799精品 | 国产传媒在线观看 | 久久精品一 | 黄色毛片视频网站 | 久久久久国产 | 日韩精品久久久久久 | 国产羞羞视频在线观看 | 少妇一级淫免费放 | 国产精品欧美久久久久一区二区 | 久草青青| 精品欧美乱码久久久久久 | 高清av在线| 99草视频 | 精品欧美一区二区三区久久久 | 国产精品久久视频 | 亚洲免费av在线 | 在线视频91| 婷婷综合一区 | www.日韩视频 | 国产一二区在线观看 | 麻豆精品久久 | 81精品国产乱码久久久久久 | 日本高清精品 | 日韩午夜免费 | 亚洲男人的天堂在线 | 中文字幕av一区二区 | 国产特级毛片 | 成人国产在线 | 久久久精品 | 久久999视频 | 国产精品国产精品 | 亚洲最黄网站 | 午夜色视频在线观看 | 国产欧美一区二区精品久久 | 欧美日韩一区二区三区在线观看 | 99九九久久 | 日韩欧美国产一区二区三区 | 国产精品无码永久免费888 | 久久久久国产视频 | 久久婷婷欧美 | 欧美一区二区三区 | 狠狠操网站 | 男人的天堂久久精品 | 凹凸日日摸日日碰夜夜爽孕妇 | 久久久久久九九九九九九 | 国产va| 一级毛片视频 | 久久久精品一区 | av网站观看 | 久久久久久久91 | 黄色视频a级毛片 | 妞干网av| 成年人网站免费在线观看 | 色婷婷综合网 | 亚洲综合视频 | 99re在线视频| 密色视频 | 免费看的毛片 | 国产伊人av | 日本亚洲欧美 | 国产亚洲精品久久久久动 | 国产精品久久国产愉拍 | 四虎欧美| 蜜桃精品久久久久久久免费影院 | 精品一二三区 | 国产亚洲一区二区三区在线观看 | 小草av| 日韩精品在线一区 | 伊人二区 | 欧美久久视频 | 午夜午夜精品一区二区三区文 | 日本一区二区三区在线视频 | 成人免费高清 | 日韩精品一区二区三区在线 | 日韩视频在线观看不卡 | 精品国产一区二区三区av片 | 国产精品久久久久久婷婷天堂 | 亚洲国产一区视频 | 亚洲国产二区 | 四虎影院免费网址 | 一区二区三区国产 | 中文字幕第一页在线 | 久久久久久综合 | 国产精品无码久久久久 | 日韩在线视频一区 | 黄色国产精品 | 一级毛片视频 | 午夜在线小视频 | 久久久久国产亚洲日本 | 日韩福利 | 精品一二三四区 | 日韩国产一区二区三区 | 欧美a网 | 91精品福利 | 精品国产高清一区二区三区 | 国产成人jvid在线播放 | 在线播放国产一区二区三区 | 精品一区二区三区在线观看 | 成人免费在线视频 | 久久国产一区二区 | 日韩一级电影在线 | 激情.com| 欧美亚洲天堂 | 波多野结衣一区二区三区中文字幕 | 久久欧美高清二区三区 | 中文字幕亚洲综合 | 成人在线 | 精品在线视频观看 | 亚洲成人免费视频在线观看 | 久久久久久成人精品 | 美日韩免费视频 | 日韩在线资源 | 久久国产精品久久久久久电车 | 欧美久久精品 | 亚洲高清在线 | 成人看片在线观看 | 97伦理网 | 日韩一区二区不卡 | 欧美日韩在线二区 | 日韩视频一区二区三区在线观看 | 国产精品一二三四区 | 亚洲免费网站 | 香蕉久久夜色精品国产使用方法 | 精品欧美日韩 | 国产性猛交xxxx免费看久久 | 久久久久久久久国产成人免费 | 国产真实乱全部视频 | 欧美成年网站 | www.久草 | 欧美日韩中文字幕 | 日韩在线 | 久久亚洲国产精品 | 精品一区av | 亚洲国产一区视频 | 亚洲一区精品视频 | 日本久久艹 | 91社区在线高清 | 日韩在线精品视频 | 欧美激情一区二区 | 狠狠操夜夜操 | 久久电影一区 | 国产日韩精品一区 | 久久综合狠狠综合久久综合88 | 午夜国产一区 | 亚洲伦理在线 | 国产精品第一国产精品 | 九九热精品视频 | 亚洲在线电影 | 午夜视频网址 | 欧美区视频 | 成人亚州| 久久天堂av综合合色蜜桃网 | 国产一区亚洲二区三区 | 天天摸天天操 | 精品欧美一区二区三区 | 中文字幕永久第一页 | 久久激情五月丁香伊人 | 成人免费一区二区三区视频软件 | 欧美成人影院在线 | 亚洲免费观看 | 午夜亚洲 | 91精产国品一二三区在线观看 | 国产精品一区二区av | 成人av影院 | 一级黄色录象片 | 日日精品 | 欧美一级片免费播放 | 日韩在线一区二区三区 | 99热播在线| 日夜夜精品 | 人人插人人干 | 成人在线欧美 | 久久小视频 | av日韩在线看 | 日韩成人免费av | 毛片免费在线 | 成人片在线播放 | 九九热最新视频 | 91久久久久久久久久久久久久 | 999久久久国产999久久久 | 最近免费中文字幕大全免费版视频 | 亚洲欧洲综合av | 女人久久久久 | 日韩av手机在线免费观看 | 久久精品亚洲 | 国产成人在线免费观看 | 久久久久久国产精品 | 国产亚洲精品精品国产亚洲综合 | 冷水浴在线观看 | 日韩欧美专区 | 伊人狠狠| 欧美精品一区视频 | 久久精品成人免费视频 | 狠久久 | ririsao亚洲国产中文 | 叶山小百合av一区二区 | 四季久久免费一区二区三区四区 | 国产精品久久久久久福利一牛影视 | 午夜影院在线观看免费 | 久久9热 | 一区二区在线 | 中文字幕在线免费 | 精品美女在线观看视频在线观看 | 在线视频这里只有精品 | 特黄特黄aaaa级毛片免费看 | 日韩精品| 亚洲一区久久 | 亚洲一区免费在线观看 | 羞羞的视频在线 | 黄毛片网站 | 精品国产乱码久久久久久久软件 | 人人澡人人草 | 久久人爽 | 精品无码久久久久久国产 | 免费操片 | 午夜精品久久久久久久久久久久 | 亚洲一区二区三区在线播放 | 欧美在线一区二区 | 国产成人精品一区二区三区视频 | 一区二区三区亚洲 | 国产精品成人一区二区 | 香蕉久久一区二区不卡无毒影院 | 国产精品中文字幕在线播放 | 浴室洗澡偷拍一区二区 | 久久精品国产99国产精品 | 91综合网 | 日韩在线视频观看 | 午夜视频在线观看网站 | 久久久久久久久久久免费视频 | a∨在线观看 | 久久综合一区二区三区 | 中文字幕一区二区三区精彩视频 | 羞羞视频在线播放 | 在线观看中文 | 日韩午夜一级片 | 欧美日韩国产一区二区 | 国产婷婷精品 | 婷婷色国产偷v国产偷v小说 | 日韩中文字幕在线 | 一区免费视频 | 国产一区二区视频在线观看 | 日韩一区二区三区在线看 | 新疆少妇videos高潮 | 国产在线精品一区二区三区 | 亚洲人视频 | 欧美精品一区二区三区在线四季 | 偷拍电影一区二区三区 | 四虎影视网址 | www.欧美日韩 | 欧美精品一区二区三区一线天视频 | 国产午夜精品一区二区三区免费 | 亚洲网站在线观看 | 99视频网站 | 一区二区三区影院 | 97热在线| 欧美精品一区二区三区在线四季 | 午夜小视频在线观看 | 国产激情综合五月久久 | 免费一区| 中文亚洲欧美 | 国产a级毛片 | 亚洲一区二区三区四区五区中文 | 成人深夜福利在线观看 | 精品99久久久久久 | 国产一区不卡 | 久久这里只有精品免费 | 免费小视频 | www.伊人网| 欧美一级全黄 | 三级黄色片在线免费观看 | 亚洲综合色自拍一区 | 亚洲免费片 | 天天夜夜操| 精品久久久久久国产 | 在线色综合| 国产a区| 在线第一页 | avsex国产 | 一级毛片免费视频 | 久久精品 | 国产伦精品一区二区 | 久久影音先锋 | 色精品| 国产真实乱全部视频 | 国产一区二区三区免费 | 黄色日本视频 | 在线激情网站 | 男女羞羞视频免费观看 | 99成人在线视频 |