日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一套优雅的 Go 错误问题解决方案

發布時間:2024/2/28 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一套优雅的 Go 错误问题解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:andruzhang,騰訊 IEG 后臺開發工程師

在使用 Go 開發的后臺服務中,對于錯誤處理,一直以來都有多種不同的方案,本文探討并提出一種從服務內到服務外的錯誤傳遞、返回和回溯的完整方案,還請讀者們一起討論。

問題提出

在后臺開發中,針對錯誤處理,有三個維度的問題需要解決:

  • 函數內部的錯誤處理: 這是一個函數在執行過程中遇到各種錯誤時的錯誤處理。這是一個語言級的問題

  • 函數/模塊的錯誤信息返回: 一個函數在操作錯誤之后,要怎么將這個錯誤信息優雅地返回,方便調用方(也要優雅地)處理。這也是一個語言級的問題

  • 服務/系統的錯誤信息返回: 微服務/系統在處理失敗時,如何返回一個友好的錯誤信息,依然是需要讓調用方優雅地理解和處理。這是一個服務級的問題,適用于任何語言

函數內部的錯誤處理

一個面向過程的函數,在不同的處理過程中需要 handle 不同的錯誤信息;一個面向對象的函數,針對一個操作所返回的不同類型的錯誤,有可能需要進行不同的處理。此外,在遇到錯誤時,也可以使用斷言的方式,快速中止函數流程,大大提高代碼的可讀性。

在許多高級語言中都提供了 try ... catch 的語法,函數內部可以通過這種方案,實現一個統一的錯誤處理邏輯。而即便是 C 這種 “中級語言” 雖然沒有,但是程序員也可以使用宏定義的方式,來實現某種程度上的錯誤斷言。

但是,對于 Go 的情況就比較尷尬了。

Go 的錯誤斷言

我們先來看斷言,我們的目的是,僅使用一行代碼就能夠檢查錯誤并終止當前函數。由于沒有 throw,沒有宏,如果要實現一行斷言,有兩種方法。

第一種是把 if 的錯誤判斷寫在一行內,比如:

if?err?!=?nil?{?return?err?}

第二種方法是借用 panic 函數,結合 recover 來實現:

func?SomeProcess()?(err?error)defer?func()?{if?e?:=?recover();?e?!=?nil?{err?=?e.(error)}}()assert?:=?func(cond?bool,?f?string,?a?...interface{})?{if?!cond?{panic(fmt.Errorf(f,?a...))}}//?...err?=?DoSomething()assert(err?==?nil,?"DoSomething()?error:?%w",?err)//?... }

這兩種方法都值得商榷。

首先,將 if 寫在同一行內的問題有:

  • 這種寫法,雖然理論上符合 Go 代碼規范,但是在實操中,花括號不換行這一點還是有點爭議的,筆者在實際代碼中也很少見到過

  • 不夠直觀,而且在花括號中也不方便寫其他語句,原因是 Go 的規范中強烈不建議使用 ; 來分隔代碼語句(if 判斷除外)

至于第二種方法,我們要分情況看;

  • 首先 panic 的設計原意,是在當程序或協程遇到嚴重錯誤,完全無法繼續運行下去的時候,才會調用(比如段錯誤、共享資源競爭錯誤)。這相當于 Linux 中 FATAL 級別的錯誤日志。僅僅用來進行普通的錯誤處理(ERROR 級別),殺雞用牛刀了。

  • panic 調用本身,相比于普通的業務邏輯,的系統開銷是比較大的。而錯誤處理這種事情,可能是常態化邏輯,頻繁的 panic - recover 操作,也會大大降低系統的吞吐。

不過使用 panic 來斷言的方案,雖然在業務邏輯中基本上不用,但在測試場景下則是非常常見的。測試嘛,用牛刀有何不可?稍微大一點的系統開銷也沒啥問題。對于 Go 來說,非常熱門的單元測試框架 goconvey 就是使用 panic 機制來實現單元測試中的斷言,用的人都說好。

綜上,在 Go 中,對于業務代碼,筆者不建議采用斷言,遇到錯誤的時候建議還是老老實實采用這種格式:

if?err?:=?DoSomething();?err?!=?nil?{//?... }

而在單測代碼中,則完全可以大大方方地采用類似于 goconvey 之類基于 panic 機制的斷言。

Go 的_try ... catch_

眾所周知 Go 是沒有 try ... catch 的,而且從官方的態度來看,短時間內也沒有考慮的計劃。但程序員有這個需求呀。筆者采用的方法,是將需要返回的 err 變量在函數內部全局化,然后結合 defer 統一處理:

func?SomeProcess()?(err?error)?{?//?<--?注意,err?變量必須在這里有定義defer?func()?{if?err?==?nil?{return}//?這下面的邏輯,就當作?catch?作用了if?errors.Is(err,?somepkg.ErrRecordNotExist)?{err?=?nil???????//?這里是舉一個例子,有可能捕獲到某些錯誤,對于該函數而言不算錯誤,因此?err?=?nil}?else?if?errors.Like(err,?somepkg.ErrConnectionClosed)?{// ... ?????????//?或者是說遇到連接斷開的操作時,可能需要做一些重連操作之類的;甚至乎還可以在這里重連成功之后,重新拉起一次請求}?else?{//?...}}()//?...if?err?=?DoSomething();?err?!=?nil?{return}//?... }

這種方案要特別注意變量作用域問題.比如前面的 if err = DoSomething(); err != nil { 行,如果我們將 err = ... 改為 err := ...,那么這一行中的 err 變量和函數最前面定義的 (err error) 不是同一個變量,因此即便在此處發生了錯誤,但是在 defer 函數中無法捕獲到 err 變量了。

在 try ... catch 方面,筆者其實沒有特別好的方法來模擬,即便是上面的方法也有一個很讓人頭疼的問題:defer 寫法導致錯誤處理前置,而正常邏輯后置了,從可讀性的角度來說非常不友好。因此也希望讀者能夠指教。同時還是希望 Go 官方能夠繼續迭代,支持這種語法。

函數/模塊的錯誤信息返回

這一點在 Go 里面,一開始看起來還是比較統一的,這就是 Go 最開始就定義的 error 類型,以系統標準的方式,統一了進程內函數級的錯誤返回模式。調用方使用 if err != nil 的統一模式,來判斷一個調用是不是成功了。

但是隨著 Go 的逐步推廣,由于 error 接口的高自由度,程序員們對于 “如何判斷該錯誤是什么錯誤” 的時候,出現了分歧。

Go 1.13 之前

在 Go 1.13 之前,對于 error 類型的傳遞,有三種常見的模式:

== 流派

這個流派很簡單,就是將各種錯誤信息直接定義為一個類枚舉值的模式,比如:

var?(ErrRecordNotExist???=?errors.New("record?not?exist")ErrConnectionClosed?=?errors.New("connection?closed")//?... )

當遇到相應的錯誤信息時,直接返回對應的 error 類枚舉值就行了。對于調用方也非常方便,可以采用 switch - case 來判斷錯誤類型:

switch?err?{case?nil://?...case?ErrRecordNotExist://?...default://?...}

個人覺得這種設計模式本質上還是 C error code 模式。

類型斷言流派

這種流派則是充分使用了 “error 是一個 interface” 的特性,重新自定義一個 error 類型。一方面是用不同的類型來表示不同的錯誤分類,另一方面則能夠實現對于同一錯誤類型,能夠給調用方提供更佳詳盡的信息。舉個例子,我們可以定義多個不同的錯誤類型如下:

type?ErrRecordNotExist?errImpltype?ErrPermissionDenined?errImpltype?ErrOperationTimeout?errImpltype?errImpl?struct?{msg?string }func?(e?*errImpl)?Error()?string?{return?e.msg }

對于調用方,則通過以下代碼來判斷不同的錯誤:

if?err?==?nil?{//?OK}?else?if?_,?ok?:=?err.(*ErrRecordNotExist);?ok?{//?處理記錄不存在的錯誤}?else?if?_,?ok?:=?err.(*ErrPermissionDenined);?ok?{//?處理權限錯誤}?else?{//?處理其他類型的錯誤}

fmt.Errorf 流派

if?err?:=?DoSomething();?err?!=?nil?{return?fmt.Errorf("DoSomething()?error:?%v",?err)}

這種模式,一方面可以透傳底層錯誤,另一方面又可以添加自定義的信息。但對于調用方而言,災難在于如果要判斷某一個錯誤的具體類型,只能用 strings.Contains() 來實現,而錯誤的具體描述文字是不可靠的,同一類型的信息可能會有不同的表達;而在 fmt.Errorf 的過程中,各個業務添加的額外信息也可能會有不同的文字,這帶來了極大的不可靠性,提高了模塊之間的耦合度。

Go 1.13 之后

在 go 1.13 版本發布之后,針對 fmt.Errorf 增加了 wraping 功能,并在 errors 包中添加了 Is() 和 As() 函數。關于這個模式的原理和使用已經有很多文章了,本文就不再贅述。

這個功能,合并并改造了前文的所謂 “== 流派” 和 “fmt.Errorf” 流派,統一使用 errors.Is() 函數;此外,也算是官方對類型斷言流派的認可(專門用 As() 函數來支持)。

在實際應用中,函數/模塊透傳錯誤時,應該采用 Go 的 error wrapping 模式,也就是 fmt.Errorf() 配合 %w 使用,業務方可以放心地添加自己的錯誤信息,只要調用方統一采用 errors.Is() 和 errors.As() 即可。

服務/系統的錯誤信息返回

傳統方案

服務/系統層面的錯誤信息返回,大部分協議都可以看成是 code - message 模式或者是其變體:

  • code 是數字或者預定義的字符串,可以視為整型或者是字符串類型的枚舉值

    • 如果是數字的話,大部分情況下是使用 0 表示成功,小部分則采用一個比較規整的十進制數字表示成功,比如 1000、10000 等

    • 如果是預定義的字符串,那么是使用 "success"、"OK" 等字符串表示成功,或者是直接以空字符串、甚至是不返回字符串字段來表示成功

  • message 字段則是錯誤信息的具體描述,大部分情況下都是一個人類可讀的句子

    • 一般而言,只有當 code 表示錯誤的時候,這個 message 字段才有返回的必要。

這種模式的特點是:code 是給程序代碼使用的,代碼判斷這是一個什么類型的錯誤,進入相應的分支處理;而 message 是給人看的,程序可以以某種形式拋出或者記錄這個錯誤信息,供用戶查看。

存在問題

在這一層面有什么問題呢?code for computer,message for user,好像挺好的。

但有時候,我們可能會收到用戶/客戶反饋一個問題:“XXX 報錯了,幫忙看看什么問題?”。用戶看不懂我們的錯誤提示嗎?

在筆者的經驗中,我們在使用 code - message 機制的時候,特別是業務初期,難以避免的是前后端的設計文案沒能完整地覆蓋所有的錯誤用例,或者是錯誤極其罕見。因此當出現錯誤時,提示曖昧不清(甚至是直接提示錯誤信息),導致用戶從錯誤信息中找到解決方案

在這種情況下,盡量覆蓋所有錯誤路徑肯定是最完美的方法。不過在做到這一點之前,碼農們往往有下面的解決方案:

  • 遇到未定義錯誤時,后端在 code 中返回一個統一的錯誤碼,并且將詳細的錯誤信息記錄在 message 中。不過這個模式有下面的問題:

  • 客戶端提示此類信息時,如果將 message 信息直接展示,可能會展示很多讓用戶看不懂(也沒必要看懂)的文字,而且文字可能會很長(萬一是一個 panic 信息),這對用戶來說非常不友好

  • 如果開發者不注意,message 信息可能會暴露程序細節,比如連接 DB 失敗的信息里可能會涉及數據庫的用戶名、IP。敏感信息一旦暴露,輕則安全教育,重則高壓線伺候

  • 還是類似上面的方法,返回統一的錯誤碼,message 則直接用一個通用的 “unknown error” 或 ”未知錯誤,請聯系 XXX“ 之類的提示信息。但是這個時候,我們要怎么查錯呢?

  • 如果主調方是另一個模塊的話還好,用戶肯定是個程序員,這個時候只要對對方提供 requestID / trackID 過來就行了。

  • 如果對方是個普通用戶,難道讓用戶 F12 看控制臺嗎?(別笑,我們還真讓用戶這么干過……)如果是移動端,那可一點看的機會都沒;如果將 traceID 暴露給用戶,那么長的 ID,誰記得住啊。

  • 既要隱藏信息,又要暴露信息,我可以摔盤子嗎……

    解決方案

    這里,筆者從日益普及的短信驗證碼有了個靈感——人的短期記憶對 4 個字符還是比較強的,因此我們可以考慮把錯誤代碼縮短到 4 個字符——不區分大小寫,因為如果人在記憶時還要記錄大小寫的話,難度會增加不少。

    怎么用 4 個字符表示盡量多的數據呢?數字+字母總共有 36 個字符,理論上使用 4 位 36 進制可以表示 36x36x36x36 = 1679616 個值。因此我們只要找到一個針對錯誤信息字符串的哈希算法,把輸出值限制在 1679616 范圍內就行了。

    這里我采用的是 MD5 作為例子。MD5 的輸出是 128 位,理論上我可以取 MD5 的輸出,模 1679616 就可以得到一個簡易的結果。實際上為了減少除法運算,我采用的是取高 20 位(0xFFFFF)的簡易方式(20 位二進制的最大值為 1048575),然后將這個數字轉成 36 進制的字符串輸出。

    當出現異常錯誤時,我們可以將 message 的提示信息如下展示:“未知錯誤,錯誤代碼 30EV,如需協助,請聯系 XXX”。順帶一提,30EV 是 "Access denied for user 'db_user'@'127.0.0.1'" 的計算結果,這樣一來,我就對調用方隱藏了敏感信息。

    至于后臺側,還是需要實實在在地將這個哈希值和具體的錯誤信息記錄在日志或者其他支持搜索的渠道里。當用戶提供該代碼時,可以快速定位。

    這種方案的優點很明顯:

    • 能夠提供足夠的信息,用戶可以記住代碼,從而反饋給開發側進行 debug。

    • 對于同一個錯誤,由于哈希的特點,計算結果是相同的。即便出現了碰撞,那么只要輸入的數據不至于太多,還是能夠快速區分的。

    • 由于不論多長的錯誤信息,反饋到前端都只有四個字符,因此后端在記錄錯誤信息的時候,可以放心地基于 Go 1.13 的 error wraping 機制進行嵌套,從而記錄足夠的錯誤信息

    簡易的錯誤碼生成代碼如下:

    import?(//?..."github.com/martinlindhe/base36" )var?(replacer?=?strings.NewReplacer("?",?"0","O",?"0","I",?"1",) )//?...func?Err2Hashcode(err?error)?(uint64,?string)?{u64?:=?hash(err.Error())codeStr?:=?encode(u64)u64,?_?=?decode(codeStr)return?u64,?codeStr }func?encode(code?uint64)?string?{s?:=?fmt.Sprintf("%4s",?base36.Encode(code))return?replace.Replace(s) }func?decode(s?string)?(uint64,?bool)?{if?len(s)?!=?4?{return?0,?false}s?=?strings.Replace(s,?"l",?"1",?-1)s?=?strings.ToUpper(s)s?=?replace.Replace(s)code?:=?base36.Decode(s)return?code,?code?>?0 }//?hash?函數可以自定義 func?hash(s?string)?uint64?{h?:=?md5.Sum([]byte(s))u?:=?binary.BigEndian.Uint32(h[0:16])return?uint64(u?&amp;?0xFFFFF) }

    當然這種方案也有局限性,筆者能想到的是需要注意以下兩點:

    • 生成 error 時要避免記錄隨機數據、不可重放數據、千人千面的數據,比如說時間、賬戶號、流水 ID 等等信息,盡可能使用戶進行統一操作時,能夠生成相同的錯誤碼。

    • 由于數字 1 和字母 I、數字 0 和字母 O 很類似,因此需要進行統一轉換,避免出現歧義。這就是為什么在 Err2Hashcode 中,對 hash 結果 encode 之后要重新 decode 一次再返回的原因。

    此外,筆者需要再強調的是:在開發中,針對各種不同的、正式的錯誤用例依然需要完整覆蓋,盡可能通過已有的 code - message 機制將足夠清晰的信息告知主調方。這種 hashcode 的錯誤代碼生成方法,僅適用于錯誤用例遺漏、或者是快速迭代過程中,用于發現和調試遺漏的錯誤用例的臨時方案。

    總結

    以上是生活随笔為你收集整理的一套优雅的 Go 错误问题解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    最新日本中文字幕 | 国产成人久久精品 | 欧美狠狠色 | 九九久久影视 | 亚洲一区二区三区毛片 | 欧美日韩p片 | 992tv在线观看网站 | 欧美激情精品久久久久久变态 | av日韩不卡| 久久久综合色 | 国产一区福利在线 | 中国黄色一级大片 | 日韩精品视频网站 | 99热99re6国产在线播放 | 久热免费| 天天射综合网视频 | 九九免费精品视频在线观看 | 国产成人一区二区三区影院在线 | 91丨九色丨高潮 | 五月婷婷深开心 | 国产高清在线a视频大全 | 欧美一级片播放 | 国产精品久久久久久久久免费看 | 999国内精品永久免费视频 | 国产久视频 | 精品国产一区二区三区不卡 | 欧美日韩中文在线视频 | 色黄视频免费观看 | 99av国产精品欲麻豆 | 91影视成人 | 欧洲不卡av | 久久精品高清 | 9999精品视频| 亚洲国产色一区 | 国产一级免费在线 | 久久黄色免费视频 | 久久综合在线 | 精产嫩模国品一二三区 | 免费看污网站 | 少妇激情久久 | 精品国产理论片 | 国产最新网站 | 久久激情电影 | 成人夜晚看av| 四季av综合网站 | 久久在线看 | 99亚洲精品| 91麻豆精品国产自产在线游戏 | 久久综合九色综合久久久精品综合 | 日韩国产精品久久 | 久久久久国产精品视频 | 午夜123 | 奇米影视8888在线观看大全免费 | 超级碰碰碰碰 | 99热精品国产一区二区在线观看 | 麻花传媒mv免费观看 | 天天草综合| 97视频亚洲 | 亚洲综合成人在线 | 国产精品一区二区久久 | 日日夜夜天天人人 | 国产精彩视频一区二区 | 狠狠色丁香 | 国产一区二区三区免费在线 | 国产精品久久久久久超碰 | 五月综合在线观看 | 免费观看午夜视频 | 免费亚洲精品 | 91人人澡 | 日韩一区二区在线免费观看 | 国产精品第54页 | av观看免费在线 | 国产精品破处视频 | 国产精品女主播一区二区三区 | 成人精品视频久久久久 | 国产一区二区网址 | 成人黄色在线播放 | 亚洲三级国产 | 国产黄色精品在线观看 | 二区在线播放 | 天天干com| 人人爽人人做 | www日韩高清| 91麻豆精品国产91久久久无需广告 | 免费网站观看www在线观看 | 天天色天天草天天射 | 免费高清av在线看 | 很黄很黄的网站免费的 | 精品久久片 | 一本一道波多野毛片中文在线 | 欧美伦理一区二区三区 | 99爱爱| www.99在线观看 | 美女网站视频一区 | 久久综合网色—综合色88 | 免费a v在线 | 91久久精品一区二区三区 | 免费看污黄网站 | 手机av观看 | 亚洲视频专区在线 | av中文字幕网址 | 色婷婷福利视频 | 成人观看视频 | 超碰97在线资源站 | 久久99久久99精品免费看小说 | 午夜视频黄 | 国产精品日韩高清 | 青草草在线 | 91看国产| 久久 精品一区 | 狠狠狠狠狠狠干 | 国产91九色蝌蚪 | 久久乐九色婷婷综合色狠狠182 | 久草线 | 天天干天天操天天 | 五月婷婷丁香网 | 黄色三级网站在线观看 | 日本三级不卡视频 | 成人免费一级 | 亚洲综合小说电影qvod | 久久精品99久久久久久 | 亚洲午夜精品一区 | 久久国产精品一区二区 | 久久系列 | 久久视频在线观看中文字幕 | 狠狠躁18三区二区一区ai明星 | 天天操天天干天天操天天干 | 精品久久久久久久 | 少妇高潮流白浆在线观看 | 欧美性护士 | 国产日韩视频在线播放 | 日韩av三区| av在线播放免费 | 国产高清在线永久 | 91精品秘密在线观看 | 日本xxxx.com| 国产美女精品人人做人人爽 | 国产成人亚洲精品自产在线 | 午夜精品一区二区三区免费 | av中文字幕在线播放 | 亚洲va欧洲va国产va不卡 | 成人在线观看网址 | 色瓜 | 国产成人综合图片 | 1区2区视频| 91视频成人免费 | 久久爽久久爽久久av东京爽 | www五月 | 国产精品99在线播放 | 最新av在线网站 | 日韩色在线 | 国产精品久久久久一区二区国产 | 亚洲一级免费电影 | 999久久久欧美日韩黑人 | 国产高清日韩欧美 | 日韩成人中文字幕 | 久久综合色天天久久综合图片 | 夜夜摸夜夜爽 | 网站在线观看你们懂的 | 成人久久精品视频 | 97人人模人人爽人人喊中文字 | 人人干网 | 精品一区二区三区香蕉蜜桃 | 久久最新网址 | 国产一区二区精 | 激情动态| 日韩大陆欧美高清视频区 | 免费在线观看污网站 | 欧美日韩国产二区 | 免费成视频| 少妇bbb | 亚洲不卡av一区二区三区 | 国产精品美女久久久网av | 99国产情侣在线播放 | 五月天电影免费在线观看一区 | 狠狠狠色丁香综合久久天下网 | 四虎影视成人永久免费观看亚洲欧美 | 久久精品网站免费观看 | 99视频国产在线 | 大型av综合网站 | 日韩欧美一区二区三区在线观看 | 国产精品综合久久久久久 | 国产91在线免费视频 | 91在线欧美| 午夜日b视频 | 1024手机看片国产 | 久久精品久久精品久久39 | 日韩在线观看视频中文字幕 | 天天摸天天舔天天操 | 亚洲精品免费在线观看 | 亚洲国产精品传媒在线观看 | 婷婷久久综合九色综合 | 欧美一区二区三区免费观看 | 久色网 | 国产在线a视频 | 2000xxx影视 | 视频在线一区 | 6080yy精品一区二区三区 | 日韩有码网站 | 国产在线更新 | 热99久久精品 | 最近更新好看的中文字幕 | 国产一级二级三级在线观看 | www.黄色在线| 国产一区二区久久 | 成人一级片视频 | 日韩一区二区久久 | 欧美韩国日本在线 | 99精品国产一区二区三区不卡 | 国产精品久久久久久久久蜜臀 | 日本天天操 | 超碰大片 | www178ccom视频在线| 18国产精品福利片久久婷 | 超碰最新网址 | 五月天综合网 | 免费在线观看不卡av | 国产亚洲精品综合一区91 | 日日草av| 亚洲激情精品 | 国产最新视频在线 | 午夜成人免费影院 | 天天色天天草天天射 | 在线免费黄色片 | 亚洲精品国产免费 | 人人草网站 | 在线免费观看视频一区 | 久草视频首页 | 国产精品中文久久久久久久 | 日韩av电影中文字幕 | 成人午夜影视 | 久久1区 | 国产又粗又硬又爽的视频 | 最新av网址在线 | 日韩中文在线播放 | 日韩欧美一区二区三区黑寡妇 | 狠狠操欧美 | 久久综合欧美 | 国产中文字幕第一页 | 日韩v欧美v日本v亚洲v国产v | 日韩精品视频免费在线观看 | 久久免费视频网 | 天天视频色 | www久久| 亚洲综合色站 | 在线观看蜜桃视频 | 亚洲国产婷婷 | 久久精品首页 | 久久综合久久伊人 | 99热手机在线观看 | 国产看片 色 | 久久久久一区二区三区四区 | 日韩三级久久 | 亚洲一级电影在线观看 | 久久精品牌麻豆国产大山 | 婷婷六月丁 | 亚洲综合色站 | 欧美日韩一区久久 | 精品国产乱码久久 | 国产精品18久久久久白浆 | 免费看特级毛片 | 国产在线日本 | 日日天天干 | 欧美日韩性 | 亚洲电影一区二区 | 国产一级二级三级在线观看 | 在线观看午夜 | 91精品国产成人www | 色综合久久88色综合天天6 | 一区二区久久久久 | 国产精品精品 | 日韩在线电影一区二区 | 欧美一级在线观看视频 | av中文电影| 日韩在线视频在线观看 | 国产无套精品久久久久久 | 国产精品福利小视频 | 久久一区二区免费视频 | 天堂va在线高清一区 | 久久电影日韩 | 国产亚洲精品久久久久久无几年桃 | 日韩av影视在线 | 97伊人网| 日韩中文字幕网站 | 精品99免费 | 97av影院| 日韩一二区在线观看 | 免费看十八岁美女 | 91九色免费视频 | 黄色av免费电影 | 国产一级视屏 | 国产精品久久久久久久久久 | 亚洲精品免费在线 | 国产原厂视频在线观看 | 色射爱| 99一级片 | 天天做天天爱天天综合网 | 亚洲 欧洲 国产 日本 综合 | 天天操月月操 | 国产高清在线不卡 | 精品国产一二区 | 精品电影一区二区 | 国产精品久久久久久久久蜜臀 | 亚洲成人第一区 | 天天操天天操天天操天天操天天操 | 69久久久久久久 | 激情综合网五月 | 97电影网手机版 | 欧美九九九 | 日韩精品一区二区三区中文字幕 | 黄色视屏av | 色婷婷丁香 | a级一a一级在线观看 | 久久图| 亚洲三级在线免费观看 | 久草在线费播放视频 | 色噜噜在线观看视频 | 久久视频在线观看中文字幕 | 丁香六月中文字幕 | 精品人人人 | av天天干 | 丁香综合激情 | 国产成人精品av在线 | 波多野结衣在线观看一区二区三区 | av中文字幕亚洲 | 五月婷婷视频在线 | 午夜视频在线观看一区二区三区 | 国产亚洲高清视频 | 亚洲播放一区 | 久久人人爽人人片 | 成人免费在线观看入口 | 日韩三级av | 最近中文字幕完整高清 | 成人国产精品一区二区 | 国产成人精品网站 | 六月色婷 | 天天综合久久综合 | 久久婷婷五月综合色丁香 | 黄网站色成年免费观看 | 日韩在线视频不卡 | 91九色免费视频 | 免费在线黄 | 久久免费看视频 | 国产精品视频最多的网站 | 欧美久草在线 | av电影中文字幕 | 久久精品99久久久久久 | 久国产在线播放 | 在线成人一区 | 精品在线观看国产 | 国产a网站 | 韩日三级av | 99色视频| 久热久草在线 | 欧美精品v国产精品 | 久草com | 国内精品久久久久久久久久 | 国产一区二区三区免费视频 | 久久xxxx| 在线观看视频你懂的 | 色综合久久88色综合天天 | 国产尤物在线观看 | 久久天天躁夜夜躁狠狠85麻豆 | 国产一区二区三区视频在线 | 国产亚洲精品美女久久 | 婷婷久久五月天 | 91在线视频免费91 | 中文亚洲欧美日韩 | 精品久久久久久久久久 | 国产高清在线看 | 国产一区自拍视频 | 精品夜夜嗨av一区二区三区 | 午夜视频免费在线观看 | 日韩电影一区二区三区在线观看 | 天天射天天操天天色 | 国产不卡免费视频 | 欧美精品一二 | 手机在线观看国产精品 | 五月天婷婷免费视频 | 992tv人人草| 成人午夜电影在线播放 | 91探花系列在线播放 | 国产精品亚洲片在线播放 | 精品久久久久久久久久久久 | www亚洲国产 | 精品久操 | a天堂最新版中文在线地址 久久99久久精品国产 | 中文字幕在线观看第二页 | 久久人91精品久久久久久不卡 | 日韩久久午夜一级啪啪 | 欧美精品在线一区 | 五月婷婷丁香六月 | 亚洲国产精品久久 | 日色在线视频 | 最新中文字幕在线播放 | 二区三区中文字幕 | 美女视频黄是免费的 | 久久草草热国产精品直播 | 成人av电影免费在线播放 | 精品一区二区综合 | 91精品国产91久久久久 | 国内丰满少妇猛烈精品播放 | 色欧美88888久久久久久影院 | 天天射天天做 | 精品亚洲成人 | 麻豆视频成人 | 中文字幕免费观看全部电影 | 成人观看视频 | 69欧美视频 | 欧美一级淫片videoshd | 五月天婷婷在线视频 | 国产91精品看黄网站在线观看动漫 | 欧美久久久久久久久久久久久 | 国产麻豆果冻传媒在线观看 | 精品国产伦一区二区三区观看说明 | 久久精品免费播放 | 久久午夜电影院 | 久久精品视频免费 | 麻豆影视在线观看 | 操操色 | 天天伊人网| 婷婷丁香色 | 亚洲三级在线免费观看 | 国产精品久久久777 成人手机在线视频 | 欧美一进一出抽搐大尺度视频 | 亚洲高清视频在线播放 | 中文字幕亚洲欧美日韩 | 激情综合网在线观看 | 中文字幕在线观看免费 | 天堂资源在线观看视频 | 成人午夜剧场在线观看 | 国产视频一二区 | 日本三级香港三级人妇99 | 日日弄天天弄美女bbbb | 日韩欧美综合视频 | 色噜噜狠狠狠狠色综合久不 | 婷婷色网站| 国产午夜精品免费一区二区三区视频 | 欧美综合在线视频 | 99久免费精品视频在线观看 | 亚洲91在线| 日韩精品2区 | 亚洲最大av网 | 免费一级黄色 | 精品久久久久久亚洲综合网站 | 亚洲精品国久久99热 | 婷婷5月色| 久久久久久久久久久久国产精品 | 国产91对白在线播 | 国产精品免费视频观看 | 99精品视频在线观看视频 | 免费网站看v片在线a | 国内外成人在线视频 | 色94色欧美| 日本成址在线观看 | 精品自拍网 | 天堂在线成人 | 成年人视频在线免费 | 天天综合网久久综合网 | 九九欧美 | 国产美女永久免费 | 色偷偷人人澡久久超碰69 | 欧美日韩一区二区三区在线观看视频 | 在线中文字幕播放 | 国产精品99蜜臀久久不卡二区 | 国产精品国产三级在线专区 | 狠狠88综合久久久久综合网 | 亚洲va综合va国产va中文 | 国产精品久久久久久a | 欧美成人猛片 | 色婷婷综合久久久 | 香蕉在线视频观看 | 国产一区欧美一区 | 午夜精品一二区 | 国产精品久久久久久999 | 免费a v在线| 欧美孕妇与黑人孕交 | 国产首页| 久久91网| 国产精品日韩在线 | 99r在线播放 | www欧美日韩 | 97在线观视频免费观看 | 亚洲精品在线观看视频 | 久久av伊人 | 欧美成人xxxxxxxx | 九九在线精品视频 | 日韩在线视频不卡 | 日韩激情av在线 | 91视频久久久久 | 91精品久久久久久久久 | www.日日操.com| 日本在线观看中文字幕 | 麻豆久久一区 | 最近免费中文视频 | av大片免费在线观看 | 久久久久久高潮国产精品视 | 免费观看福利视频 | 日本三级香港三级人妇99 | 四虎免费在线观看 | 欧美日韩在线视频一区 | 国产乱码精品一区二区三区介绍 | 久久久首页| 精品国产免费看 | 国产成人久久av977小说 | 亚洲成人黄色网址 | 人人澡av | 精品1区2区3区| 在线观看视频一区二区三区 | 国产99久久久精品视频 | 成人av地址 | 欧美在线一二 | 日韩综合一区二区 | 国产精品大片在线观看 | 人人草人 | 麻豆视频免费播放 | 国际精品久久 | 婷婷av网站| 久久视频在线 | 在线视频黄 | 久久8精品 | 奇米先锋 | 三级a视频| 色婷婷色 | 激情综合一区 | 亚洲日日夜夜 | 在线观看中文字幕dvd播放 | 久久第四色 | 国产精品99免视看9 国产精品毛片一区视频 | 激情黄色av | 日韩av看片| 99 精品 在线 | 国产1区在线 | 国产99久久99热这里精品5 | 中文字幕在线观看日本 | 最新国产精品拍自在线播放 | 91成人免费看片 | 波多野结衣网址 | 久久久久夜色 | 国产精品9999久久久久仙踪林 | 国产高清不卡在线 | 国产精品麻豆一区二区三区 | 欧美一区二区三区免费观看 | 中文字幕在线观看的网站 | 天天干天天弄 | 中文字幕在线高清 | 黄色app网站在线观看 | 久久精品欧美日韩精品 | 国产精品永久 | 亚洲 欧美日韩 国产 中文 | 日韩在线免费电影 | 天天干视频在线 | www免费在线观看 | 在线看片91 | 麻豆激情电影 | 国产91成人在在线播放 | 亚洲日本精品视频 | 亚洲在线视频播放 | 日韩电影在线视频 | 亚洲97在线 | a久久免费视频 | 亚洲免费一级 | 亚洲日本一区二区在线 | 中文字幕日韩免费视频 | 在线观看成人毛片 | 日韩精品免费在线观看 | 国产99久久久精品 | 久久优 | av免费在线网站 | 国产一线二线三线在线观看 | www.伊人网 | 国产精品电影一区 | 欧美激情视频在线观看免费 | 香蕉久久国产 | 在线你懂的视频 | 91成人免费 | 亚洲在线黄色 | 亚洲高清精品在线 | 日韩有色 | 久久深夜福利免费观看 | 伊人影院得得 | 久久艹在线 | 美女精品在线 | 国产一级免费播放 | 丁香 久久 综合 | 久久精品视频4 | 狠狠色丁香婷婷综合久久片 | 久久这里有精品 | 日韩欧美精品一区二区 | 狠狠干网 | 天天操综合 | 91尤物在线播放 | 欧美在线观看小视频 | 91精品国产一区二区在线观看 | 国产成人在线一区 | 国产黄| 国产精品久久网 | 福利片视频区 | 在线国产视频观看 | 日日操日日操 | 欧美日韩在线观看一区 | 国产第一页福利影院 | 中文字幕高清 | 五月婷婷激情综合网 | 亚洲一区网站 | 97手机电影网 | 午夜精品一区二区三区在线观看 | 手机av永久免费 | 91亚洲精品久久久中文字幕 | 亚洲高清精品在线 | 久久亚洲婷婷 | 中文资源在线观看 | 夜夜夜夜操 | 99热在线观看 | 在线观看日本韩国电影 | 久久久久久激情 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产裸体视频bbbbb | 欧美日韩视频精品 | 中文字幕乱码一区二区 | 亚洲最大av在线播放 | 日韩av不卡在线播放 | 国产精品一级在线 | 日韩在线资源 | 国产一区在线免费 | 日韩精品影视 | 日韩成人精品在线观看 | 三上悠亚一区二区在线观看 | 中文字幕国产视频 | 十八岁免进欧美 | 手机成人av在线 | 中文字幕av电影下载 | 99在线观看视频网站 | 国产中文字幕一区二区 | 免费国产在线精品 | 久热爱 | 欧美黄网站 | 夜夜天天干 | 色网免费观看 | 在线观看91久久久久久 | 国产亚洲精品久久久久久电影 | 在线天堂v | avwww在线观看 | 国产精品免费大片视频 | 视频一区视频二区在线观看 | 久草国产在线观看 | 欧美性精品 | 亚洲综合激情小说 | 日韩视频免费播放 | 国产一区二区午夜 | 国产精品美女在线观看 | 久久精品国产免费看久久精品 | 99精品国产高清在线观看 | 在线观看中文字幕 | 99精品一级欧美片免费播放 | av在线影视| 欧美激情第一区 | 在线看片a| 一区在线电影 | 免费v片| 五月香视频在线观看 | av线上免费看 | 丝袜足交在线 | 午夜精品久久久久久久久久久 | 日韩精品视频免费 | 中国一区二区视频 | 91久久国产精品 | 你操综合 | 久久久影片 | 特级aaa毛片 | 九九日九九操 | 又污又黄网站 | 中文字幕一二三区 | 免费在线成人av电影 | 中文字幕一区二区在线观看 | av免费观看在线 | 国产在线传媒 | 国产精品成人久久久久 | 国产真实在线 | 不卡电影免费在线播放一区 | 九九免费在线观看 | 久久夜色精品国产欧美一区麻豆 | 中文字幕精品在线 | 国产精品原创视频 | 色国产在线| 大胆欧美gogo免费视频一二区 | 国产a级免费 | 日韩av片无码一区二区不卡电影 | 丁香六月婷婷开心婷婷网 | 国产成人三级在线播放 | 成人黄视频| 九九热在线视频免费观看 | 九色精品免费永久在线 | 美女网站视频久久 | 亚洲最大免费成人网 | 天天操天天爱天天爽 | 欧美精品一二三 | 久久人人精品 | 亚洲精品视频在线观看免费 | 精品久久久国产 | 精品视频www | 人人爽人人爽人人片av免 | 久久综合色一综合色88 | 韩日精品视频 | 中文字幕电影网 | 亚洲自拍偷拍色图 | 国产手机av | 天天干天天操天天操 | 亚洲色图 校园春色 | 国产又粗又猛又爽 | 欧美日韩精品免费观看 | 日本资源中文字幕在线 | 2019av在线视频| 久久久久久免费 | 91最新在线观看 | 成人在线网站观看 | 免费在线观看黄网站 | 欧美精品中文字幕亚洲专区 | 日韩午夜视频在线观看 | 在线免费观看不卡av | 成人av在线一区二区 | 精品少妇一区二区三区在线 | 国产网红在线观看 | 欧美日韩中文国产 | 精品一区二区综合 | 亚洲国产视频a | 天天色天天射综合网 | 国产精品久久久久久久久久白浆 | 五月天婷婷综合 | 免费国产视频 | 开心激情网五月天 | 久久久久久久久亚洲精品 | 三日本三级少妇三级99 | 亚洲一区欧美激情 | 国产视频 亚洲视频 | 成人在线免费看 | av成人黄色 | 成人蜜桃网 | 日日摸日日添日日躁av | 国产视频一 | 摸阴视频| 91麻豆精品一区二区三区 | 国产精品综合久久久 | 在线黄频 | 亚洲国产中文字幕在线视频综合 | 久久精品香蕉视频 | 中文字幕专区高清在线观看 | av中文字幕在线看 | 天天干天天干天天干天天干天天干天天干 | 黄色三级网站在线观看 | 欧美一级视频在线观看 | 国产成人精品午夜在线播放 | 国产96av| 亚洲综合激情 | 999超碰 | 亚洲美女视频在线 | 久久99精品久久久久久秒播蜜臀 | 欧美在线观看禁18 | 天天拍天天色 | 人人干人人爽 | 美女视频黄色免费 | 亚洲国产mv | 久久久久亚洲精品成人网小说 | 亚洲免费资源 | 91成人在线免费观看 | 国产一级片免费观看 | 日本久久成人 | av在线进入 | 天天做夜夜做 | 中文字幕国产一区二区 | 九九九九精品 | 91精品国产综合久久久久久久 | 午夜精品一二区 | 成年人免费看片网站 | 亚洲日本精品视频 | 久久久久亚洲精品国产 | 午夜精品福利影院 | 久久精品视频4 | 一级一片免费观看 | 国语精品免费视频 | 日韩有码欧美 | 精品国产免费人成在线观看 | 尤物九九久久国产精品的分类 | 久久久黄视频 | 日韩网站在线播放 | 国产精品视频最多的网站 | 久久99热国产 | 午夜精品久久久久久99热明星 | 麻豆影视在线观看 | 国产精品免费高清 | 免费91麻豆精品国产自产在线观看 | 在线黄网站 | 成人国产综合 | 久久成人黄色 | 日韩有码网站 | 99色在线观看视频 | 天天干婷婷 | aa一级片| 激情网婷婷| 缴情综合网五月天 | 亚洲欧洲视频 | 三上悠亚在线免费 | 精品国产成人av | 国产麻豆精品久久一二三 | 最新日韩在线观看 | 欧美一区二区在线免费看 | 日本性高潮视频 | 婷婷综合导航 | 亚洲国产电影在线观看 | 免费在线观看av网站 | 久久精品综合一区 | 欧美成人xxx | 中日韩免费视频 | 久久午夜精品影院一区 | 日韩在线无 | 日本午夜在线亚洲.国产 | 国产一级黄色免费看 | 激情一区二区三区欧美 | 国产专区视频在线观看 | 又黄又爽又刺激 | 97超碰在线久草超碰在线观看 | 欧美日韩免费网站 | av性在线| 日日干夜夜草 | 91国内产香蕉 | 91高清完整版在线观看 | 日韩r级在线 | 一级黄色免费网站 | 久久综合九色99 | 国产综合精品久久 | 国产在线观看你懂得 | a视频免费看 | 亚洲九九精品 | 精品国产伦一区二区三区观看体验 | 97手机电影网 | 成人午夜毛片 | 黄色免费看片网站 | 亚洲精品在线二区 | 五月天婷婷在线观看视频 | 午夜精品电影一区二区在线 | 中文字幕在线观看网址 | 久久午夜精品视频 | 91av视频免费在线观看 | 国产精品入口久久 | 国产成人99久久亚洲综合精品 | 日本精品va在线观看 | 日韩欧美在线观看一区二区三区 | 亚洲黄色高清 | 欧美日韩中 | 性色视频在线 | 久久一级电影 | www黄色软件| 久久天天草 | 久久精品精品 | 天天操天天色天天射 | 91九色视频 | 美女国内精品自产拍在线播放 | 免费网站黄| 欧美成年人在线观看 | 欧美在线视频精品 | 天天操天天舔天天爽 | 在线亚洲日本 | 欧美午夜理伦三级在线观看 | 亚洲精品国产电影 | 日韩在线免费小视频 | 米奇四色影视 | 国产精品一区二区三区观看 | 国内外成人在线 | 欧美亚洲另类在线视频 | 亚洲欧洲国产视频 | 国产私拍在线 | 国产一级片在线播放 | 波多在线视频 | 日韩免费久久 | 日韩欧美高清视频在线观看 | 国产拍在线 | 久久久久久久国产精品视频 | 欧美国产精品一区二区 | 久久久久国产免费免费 | 男女日麻批 | 日韩在线 一区二区 | 懂色av懂色av粉嫩av分享吧 | 91av视频免费在线观看 | 一级一级一片免费 | 最近免费中文字幕mv在线视频3 | 久久九九久久九九 | 国产精品乱码一区二区视频 | 欧美91成人网 | 日韩中文字幕国产 | 美女久久一区 | 日韩有码中文字幕在线 | 成人av片免费观看app下载 | 久久久免费少妇 | 青青草国产精品视频 | 日日摸日日爽 | 夜色资源站国产www在线视频 | 最近高清中文在线字幕在线观看 | 欧美日韩国产在线观看 | 91最新在线视频 | 在线日韩视频 | 欧美精品在线一区 | 欧洲一区二区三区精品 | 欧美成人在线免费 | 国产福利91精品张津瑜 | 在线亚洲精品 | 国产亚洲日 | 五月天婷婷在线播放 | 精品免费久久 | 久久综合影视 | 在线观看成人国产 | av在线观 | 91精品视频免费看 | 黄色的视频| 亚洲午夜久久久综合37日本 | 亚洲a在线观看 | 中文视频在线看 | 午夜国产福利在线观看 | 97久久精品午夜一区二区 | 一区二区三区在线播放 | 日韩xxx视频 | 欧美成人精品三级在线观看播放 | 探花视频免费观看高清视频 | 日韩精品一区二区三区丰满 | 日韩a欧美 | www.在线观看视频 | 亚洲 成人 一区 | 欧洲精品视频一区二区 | 在线天堂中文www视软件 | 免费在线观看日韩视频 | 国产资源在线观看 | 麻豆国产精品视频 | 99热在线免费观看 | 亚洲区另类春色综合小说校园片 | 看黄色.com| 69国产盗摄一区二区三区五区 | 激情电影在线观看 | 国产亚洲精品美女 | 国产玖玖视频 | 丝袜美腿亚洲综合 | 精品国产亚洲日本 | 亚洲精品成人av在线 | 中文字幕一区av | 国产亚洲精品成人 | 天天摸天天操天天舔 | 丁香六月婷婷综合 | 中文字幕91在线 | 日韩免费在线网站 | 午夜精品一二三区 | 91完整版观看 | 在线观看av免费 | 日日日操 | 91在线porny国产在线看 | 国产99久久久精品 | 特黄特黄的视频 | 久久美女高清视频 | 亚洲视频电影在线 | 中文字幕av影院 | 国产精品久久久久久久午夜片 | 国产日韩在线观看一区 | 超碰人人草人人 | 亚洲欧美在线视频免费 | 91在线看 | 黄色软件在线观看免费 | 国产一二三精品 | 国产精品av久久久久久无 | 久久99精品久久久久久秒播蜜臀 | 国产精品99久久久精品 | 婷婷综合av| 曰韩精品| 亚洲三级精品 | 久久精品人人做人人综合老师 | 午夜在线看 | 国产成人一区二区三区电影 | 国产69精品久久久久久 | 91自拍91| 99精品国产一区二区三区不卡 | 国产黄在线观看 | 五月婷在线播放 | 免费一级特黄毛大片 | 国产黄色精品 | 国产一区在线精品 | 欧美在线一级片 | 亚洲免费av电影 | 久久久久欠精品国产毛片国产毛生 | 色多多在线观看 | 国产一区二区三区网站 | 中文字幕人成人 | 色婷婷综合久久久久中文字幕1 | 欧美男同视频网站 | 成人黄色av网站 | 亚洲成aⅴ人在线观看 | 亚洲美女久久 | 久久久久久久影视 | 亚洲桃花综合 | 在线视频观看国产 | 亚洲激情在线观看 | 极品久久久久 | 少妇精品久久久一区二区免费 |