數(shù)據(jù)流的處理方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)流的處理方法和裝置。其中,該數(shù)據(jù)流的處理方法包括:獲取待執(zhí)行數(shù)據(jù)流和用于檢測數(shù)據(jù)流的代碼;封裝待執(zhí)行數(shù)據(jù)流和代碼,得到封裝程序;利用封裝程序執(zhí)行待執(zhí)行數(shù)據(jù)流;在封裝程序判斷出待執(zhí)行數(shù)據(jù)流出錯時,對待執(zhí)行數(shù)據(jù)流進行恢復(fù);以及在封裝程序判斷出待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。通過本發(fā)明,解決了現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題。
【專利說明】數(shù)據(jù)流的處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)流的處理方法和裝置。
【背景技術(shù)】
[0002]在Java開發(fā)過程中,使用系統(tǒng)內(nèi)置的InputStream和OutputStream中,如果發(fā)生了某些錯誤(比如網(wǎng)速慢,突然斷網(wǎng)又立即恢復(fù)),那么數(shù)據(jù)流的讀取會中斷;進行錯誤處理之后,只能重新開啟該數(shù)據(jù)流。如果在數(shù)據(jù)流錯誤次數(shù)達到一定數(shù)值時,放棄錯誤重試,實現(xiàn)難度很大。
[0003]現(xiàn)有技術(shù)在數(shù)據(jù)流出現(xiàn)錯誤時,需要修改代碼結(jié)構(gòu),使用Java自帶的異常錯誤處理方式包含數(shù)據(jù)流操作,使用全局變量記錄當(dāng)前的指針偏移量,發(fā)生錯誤后,如果該錯誤可以忽略,那么利用已經(jīng)記錄的指針偏移量調(diào)整新數(shù)據(jù)流的狀態(tài)。與此同時,如果允許重試很多次,那么從代碼實現(xiàn)角度講非常麻煩,不斷嵌套異常錯誤處理語法。代碼編寫的工作量很大,所有使用到該數(shù)據(jù)流的地方都需要做變更,可能會引起未知錯誤或者破壞原有架構(gòu),尤其涉及到多層調(diào)用的時候,更容易造成編碼錯誤。
[0004]針對現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的主要目的在于提供一種數(shù)據(jù)流的處理方法和裝置,以解決現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題。
[0006]為了實現(xiàn)上述目的,根據(jù)本發(fā)明實施例的一個方面,提供了一種數(shù)據(jù)流的處理方法。根據(jù)本發(fā)明的數(shù)據(jù)流的處理方法包括:獲取待執(zhí)行數(shù)據(jù)流和用于檢測所述數(shù)據(jù)流的代碼;封裝所述待執(zhí)行數(shù)據(jù)流和所述代碼,得到封裝程序;利用所述封裝程序執(zhí)行所述待執(zhí)行數(shù)據(jù)流;在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流出錯時,對所述待執(zhí)行數(shù)據(jù)流進行恢復(fù);以及在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。
[0007]進一步地,利用所述封裝程序執(zhí)行所述待執(zhí)行數(shù)據(jù)流包括:執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤;如果所述執(zhí)行過程出現(xiàn)錯誤,則判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù);
[0008]在判斷當(dāng)前錯誤次數(shù)已經(jīng)達到所述最大重試次數(shù)時,向用戶發(fā)出所述執(zhí)行過程出錯的提示信息;以及
[0009]在判斷出所述當(dāng)前錯誤次數(shù)小于所述最大重試次數(shù)時,繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
[0010]進一步地,在執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤之后,所述方法還包括:如果所述執(zhí)行過程沒有發(fā)生錯誤,則記錄執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果;將所述執(zhí)行結(jié)果發(fā)送給所述用戶;以及將錯誤計數(shù)器中的計數(shù)清零。
[0011]進一步地,判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到所述最大重試次數(shù)包括:獲取預(yù)先設(shè)置的錯誤列表;從所述錯誤列表中查找所述錯誤;如果在所述錯誤列表中查找到所述錯誤,則提取所述錯誤列表中記錄的所述錯誤的最大重試次數(shù);如果在所述錯誤列表中沒有查找到所述錯誤,則將所述錯誤發(fā)送給所述用戶。
[0012]進一步地,在判斷出所述當(dāng)前錯誤次數(shù)小于所述最大重試次數(shù)時,繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流包括:記錄所述數(shù)據(jù)流的出錯位置;從記錄的所述出錯位置開始繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
[0013]為了實現(xiàn)上述目的,根據(jù)本發(fā)明實施例的另一方面,提供了一種數(shù)據(jù)流的處理裝置。根據(jù)本發(fā)明的數(shù)據(jù)流的處理裝置包括:獲取單元,用于獲取待執(zhí)行數(shù)據(jù)流和用于檢測所述數(shù)據(jù)流的代碼;封裝單元,用于封裝所述待執(zhí)行數(shù)據(jù)流和所述代碼,得到封裝程序;執(zhí)行單元,用于利用所述封裝程序執(zhí)行所述待執(zhí)行數(shù)據(jù)流;恢復(fù)單元,用于在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流出錯時,對所述待執(zhí)行數(shù)據(jù)流進行恢復(fù);以及輸出單元,用于在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。
[0014]進一步地,所述執(zhí)行單元包括:第一執(zhí)行模塊,用于執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤;判斷模塊,用于在所述執(zhí)行過程出現(xiàn)錯誤時,判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù);提示模塊,用于在判斷當(dāng)前錯誤次數(shù)已經(jīng)達到所述最大重試次數(shù)時,向所述發(fā)出所述執(zhí)行過程出錯的提示信息;以及第二執(zhí)行模塊,用于在判斷出所述當(dāng)前錯誤次數(shù)小于所述最大重試次數(shù)時,繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
[0015]進一步地,所述裝置還包括:記錄模塊,用于在執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤之后,如果所述執(zhí)行過程沒有發(fā)生錯誤,則記錄執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果;發(fā)送模塊,用于將所述執(zhí)行結(jié)果發(fā)送給所述用戶;以及清零模塊,用于將錯誤計數(shù)器中的計數(shù)清零。
[0016]進一步地,所述判斷模塊包括:獲取子模塊,用于獲取預(yù)先設(shè)置的錯誤列表;查找子模塊,用于從所述錯誤列表中查找所述錯誤;提取子模塊,用于在所述錯誤列表中查找到所述錯誤時,提取所述錯誤列表中記錄的所述錯誤的最大重試次數(shù);發(fā)送子模塊,用于在所述錯誤列表中沒有查找到所述錯誤時,將所述錯誤發(fā)送給所述用戶。
[0017]進一步地,所述第二執(zhí)行模塊包括:記錄子模塊,用于記錄所述數(shù)據(jù)流的出錯位置;執(zhí)行子模塊,用于從記錄的所述出錯位置開始繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
[0018]根據(jù)發(fā)明實施例,通過該數(shù)據(jù)流的處理方法包括:獲取待執(zhí)行數(shù)據(jù)流和用于檢測數(shù)據(jù)流的代碼;封裝待執(zhí)行數(shù)據(jù)流和代碼,得到封裝程序;利用封裝程序執(zhí)行待執(zhí)行數(shù)據(jù)流;在封裝程序判斷出待執(zhí)行數(shù)據(jù)流出錯時,對待執(zhí)行數(shù)據(jù)流進行恢復(fù);以及在封裝程序判斷出待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果,將恢復(fù)數(shù)據(jù)流的代碼進行封裝,封裝后的代碼可以對不同數(shù)據(jù)流進行數(shù)據(jù)恢復(fù),根據(jù)錯誤列表能夠查找出錯誤的類型和最大重試次數(shù),根據(jù)最大重試次數(shù)判斷是否對數(shù)據(jù)流進行恢復(fù),也就實現(xiàn)了不修改恢復(fù)數(shù)據(jù)流的代碼的情況下對多個數(shù)據(jù)流進行錯誤恢復(fù),解決了現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題。
【專利附圖】
【附圖說明】
[0019]構(gòu)成本申請的一部分的附圖用來提供對本發(fā)明的進一步理解,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
[0020]圖1是根據(jù)本發(fā)明實施例的數(shù)據(jù)流的處理方法的流程圖;
[0021]圖2是根據(jù)本發(fā)明優(yōu)選實施例的數(shù)據(jù)流的處理方法的流程圖;以及
[0022]圖3是根據(jù)本發(fā)明實施例的數(shù)據(jù)流的處理裝置的示意圖。
【具體實施方式】
[0023]需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。
[0024]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護的范圍。
[0025]需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0026]名詞解釋:
[0027]Java:是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言,是由Sun Microsystems公司于1995年5月推出的Java程序設(shè)計語言和Java平臺(即JavaEE, JavaME, JavaSE)的總稱。
[0028]數(shù)據(jù)流:只能以事先規(guī)定好的順序被讀取一次的數(shù)據(jù)的一個序列。
[0029]對象:人們要進行研宄的任何事物,從最簡單的整數(shù)到復(fù)雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規(guī)則、計劃或事件。
[0030]類:具有相同特性(數(shù)據(jù)元素)和行為(功能)的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象,類實際上就是一種數(shù)據(jù)類型。
[0031]本發(fā)明實施例提供了一種數(shù)據(jù)流的處理方法。本實施例的數(shù)據(jù)流的處理方法將錯誤數(shù)據(jù)流進行恢復(fù)的代碼封裝起來,在需要對不同的數(shù)據(jù)流進行錯誤時,更換數(shù)據(jù)流即可,而無需根據(jù)不同的數(shù)據(jù)流調(diào)整恢復(fù)錯誤數(shù)據(jù)流的代碼,避免了反復(fù)修改代碼所造成的錯誤,從而解決了現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題,達到了避免恢復(fù)數(shù)據(jù)流時出錯的效果。
[0032]圖1是根據(jù)本發(fā)明實施例的數(shù)據(jù)流的處理方法的流程圖。如圖1所示,該數(shù)據(jù)流的處理方法包括如下步驟:
[0033]步驟S102,獲取待執(zhí)行數(shù)據(jù)流和用于檢測數(shù)據(jù)流的代碼。
[0034]步驟S104,封裝待執(zhí)行數(shù)據(jù)流和代碼,得到封裝程序。
[0035]步驟S106,利用封裝程序執(zhí)行待執(zhí)行數(shù)據(jù)流。
[0036]步驟S108,在封裝程序判斷出待執(zhí)行數(shù)據(jù)流出錯時,對待執(zhí)行數(shù)據(jù)流進行恢復(fù)。
[0037]步驟S110,在封裝程序判斷出待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。
[0038]將待執(zhí)行數(shù)據(jù)流和代碼進行封裝之后,利用得到的封裝程序執(zhí)行該待執(zhí)行數(shù)據(jù)流,在執(zhí)行時如果出錯,則執(zhí)行恢復(fù)待執(zhí)行數(shù)據(jù)流的動作,繼續(xù)執(zhí)行待執(zhí)行數(shù)據(jù)流,如果待執(zhí)行數(shù)據(jù)流未出錯,則輸出執(zhí)行結(jié)果。如果需要對不同的數(shù)據(jù)流進行檢測,改變待執(zhí)行數(shù)據(jù)流即可,而無需修改用于檢測數(shù)據(jù)流的代碼,待執(zhí)行數(shù)據(jù)流能夠在封裝程序中進行正常的執(zhí)行,在得到執(zhí)行結(jié)果后,將執(zhí)行結(jié)果返回給用戶。也就是說,用于恢復(fù)數(shù)據(jù)流的封裝程序和待執(zhí)行數(shù)據(jù)流為獨立的兩個部分,用于檢測數(shù)據(jù)流的代碼不會隨著待執(zhí)行數(shù)據(jù)流的變化而變化,不同的數(shù)據(jù)流可以采用相同的代碼來進行數(shù)據(jù)流的恢復(fù)。
[0039]通過上述實施例,將恢復(fù)數(shù)據(jù)流的代碼進行封裝,在對不同的數(shù)據(jù)流進行恢復(fù)時,更換數(shù)據(jù)流就能完成錯誤的恢復(fù),而無需更改代碼,并且,封裝程序中可以使數(shù)據(jù)流進行正常的執(zhí)行,并且輸出執(zhí)行得到的結(jié)果,不僅避免了更改檢測數(shù)據(jù)流的代碼所導(dǎo)致的錯誤,還不影響數(shù)據(jù)流的正常執(zhí)行,從而解決了現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題。
[0040]優(yōu)選地,利用封裝程序執(zhí)行待執(zhí)行數(shù)據(jù)流包括:執(zhí)行待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤。如果執(zhí)行過程出現(xiàn)錯誤,則判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù)。在判斷當(dāng)前錯誤次數(shù)已經(jīng)達到最大重試次數(shù)時,向用戶發(fā)出執(zhí)行過程出錯的提示信息。以及在判斷出當(dāng)前錯誤次數(shù)小于最大重試次數(shù)時,繼續(xù)執(zhí)行待執(zhí)行數(shù)據(jù)流。
[0041]用戶發(fā)出對數(shù)據(jù)流執(zhí)行操作的指令,封裝程序獲取該指令所對應(yīng)的數(shù)據(jù)流,并執(zhí)行該數(shù)據(jù)流。判斷數(shù)據(jù)流是否出錯,如果數(shù)據(jù)流出錯,則判斷當(dāng)前錯誤的次數(shù)是否已經(jīng)達到最大的出錯次數(shù),即最大重試次數(shù),如果已經(jīng)達到最大重試次數(shù),則向用戶發(fā)出執(zhí)行過程出錯的提示信息,如果當(dāng)前錯誤的次數(shù)小于執(zhí)行過程出錯的提示信息,則繼續(xù)執(zhí)行該指令所對應(yīng)的數(shù)據(jù)流。
[0042]在執(zhí)行過程出錯后,錯誤計數(shù)器記錄一次錯誤,如果執(zhí)行過程沒有發(fā)生錯誤,則記錄執(zhí)行待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。將執(zhí)行結(jié)果發(fā)送給用戶。以及將錯誤計數(shù)器中的計數(shù)清零。封裝程序在執(zhí)行該待執(zhí)行數(shù)據(jù)流沒有出錯時,記錄執(zhí)行結(jié)果,并將執(zhí)行結(jié)果發(fā)送給用戶,即完成該數(shù)據(jù)流的執(zhí)行。由于該待執(zhí)行數(shù)據(jù)流已經(jīng)執(zhí)行完畢,可以將錯誤計數(shù)器中的計數(shù)清零。
[0043]優(yōu)選地,由于封裝程序可以對不同的數(shù)據(jù)流進行恢復(fù),而不同的數(shù)據(jù)流可能對應(yīng)不同的恢復(fù)次數(shù),因此,可以預(yù)先設(shè)置錯誤列表,并在錯誤列表中記錄錯誤的種類,以及每種錯誤的可恢復(fù)次數(shù),即判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù)包括:獲取預(yù)先設(shè)置的錯誤列表。從錯誤列表中查找錯誤。如果在錯誤列表中查找到錯誤,則提取錯誤列表中記錄的錯誤的最大重試次數(shù)。如果在錯誤列表中沒有查找到錯誤,則將錯誤發(fā)送給用戶。
[0044]預(yù)先設(shè)置的錯誤列表中記錄了數(shù)據(jù)流A的最大重試次數(shù)為3,還記錄了數(shù)據(jù)流B的最大重試次數(shù)為5,在執(zhí)行待執(zhí)行數(shù)據(jù)流時出錯時,從錯誤列表中查找該錯誤種類,如果能找到該錯誤種類,則判斷該數(shù)據(jù)流的錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù),如果沒有查找到該錯誤種類,則將該錯誤發(fā)送給用戶。在該數(shù)據(jù)流的錯誤次數(shù)達到最大重試次數(shù)時,將該錯誤發(fā)送給用戶,在該數(shù)據(jù)流的錯誤次數(shù)未達到最大重試次數(shù)時,記錄數(shù)據(jù)流的出錯位置,并從記錄的出錯位置開始繼續(xù)執(zhí)行待執(zhí)行數(shù)據(jù)流。
[0045]例如,數(shù)據(jù)流包括數(shù)據(jù)1、數(shù)據(jù)2、數(shù)據(jù)3、數(shù)據(jù)4和數(shù)據(jù)5,在執(zhí)行到數(shù)據(jù)3時出錯,則記錄數(shù)據(jù)流執(zhí)行到數(shù)據(jù)3,在錯誤次數(shù)未達到最大重試次數(shù)時從數(shù)據(jù)3開始繼續(xù)執(zhí)行該數(shù)據(jù)流。
[0046]通過上述實施例,將恢復(fù)數(shù)據(jù)流的代碼進行封裝,封裝后的代碼可以對不同數(shù)據(jù)流進行數(shù)據(jù)恢復(fù),根據(jù)錯誤列表能夠查找出錯誤的類型和最大重試次數(shù),根據(jù)最大重試次數(shù)判斷是否對數(shù)據(jù)流進行恢復(fù),也就實現(xiàn)了不修改恢復(fù)數(shù)據(jù)流的代碼的情況下對多個數(shù)據(jù)流進行錯誤恢復(fù),解決了現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題。
[0047]一下結(jié)合圖2對本發(fā)明的數(shù)據(jù)流的處理方法進行說明。
[0048]步驟S201,用戶發(fā)出對數(shù)據(jù)流進行操作的指令。
[0049]步驟S202,封裝程序執(zhí)行用戶的命令,進行數(shù)據(jù)流操作。
[0050]步驟S203,封裝程序獲取數(shù)據(jù)流;
[0051]步驟S204,執(zhí)行數(shù)據(jù)流時是否發(fā)生錯誤,如果未發(fā)生錯誤,則執(zhí)行步驟S205 ;如果發(fā)生錯誤,則執(zhí)行步驟S206.
[0052]步驟S205,執(zhí)行數(shù)據(jù)流操作,得到結(jié)果數(shù)據(jù),并重置錯誤計數(shù)器,既對錯誤計數(shù)器清零。
[0053]步驟S206,判斷錯誤是否在錯誤列表中,如果該錯誤在錯誤列表中,則對錯誤計數(shù)器加一,如果該錯誤不在錯誤列表中,則向用戶返回執(zhí)行錯誤的提示,其中,錯誤列表為預(yù)先設(shè)置的錯誤列表。
[0054]步驟S207,判斷錯誤計數(shù)器的計數(shù)是否達到最大重試次數(shù),如果錯誤計數(shù)器的計數(shù)達到最大重試次數(shù),則向用戶返回執(zhí)行錯誤的提示;否則,執(zhí)行步驟S208。
[0055]步驟S208,記錄當(dāng)前數(shù)據(jù)流的位置,關(guān)閉當(dāng)前數(shù)據(jù)流,并執(zhí)行步驟S203,即開啟新的數(shù)據(jù)流,并在當(dāng)前數(shù)據(jù)流的位置繼續(xù)執(zhí)行。
[0056]本發(fā)明實施例還提供了一種數(shù)據(jù)流的處理裝置。該裝置可以通過計算機實現(xiàn)其功能。需要說明的是,本發(fā)明實施例的數(shù)據(jù)流的處理裝置可以用于執(zhí)行本發(fā)明實施例所提供的數(shù)據(jù)流的處理方法,本發(fā)明實施例的數(shù)據(jù)流的處理方法也可以通過本發(fā)明實施例所提供的數(shù)據(jù)流的處理裝置來執(zhí)行。
[0057]圖3是根據(jù)本發(fā)明實施例的數(shù)據(jù)流的處理裝置的示意圖。如圖3所示,該數(shù)據(jù)流的處理裝置包括:獲取單元10、封裝單元30、執(zhí)行單元50、恢復(fù)單元70和輸出單元90。
[0058]獲取單元10用于獲取待執(zhí)行數(shù)據(jù)流和用于檢測數(shù)據(jù)流的代碼
[0059]封裝單元30用于封裝待執(zhí)行數(shù)據(jù)流和代碼,得到封裝程序
[0060]執(zhí)行單元50用于利用封裝程序執(zhí)行待執(zhí)行數(shù)據(jù)流
[0061]恢復(fù)單元70用于在封裝程序判斷出待執(zhí)行數(shù)據(jù)流出錯時,對待執(zhí)行數(shù)據(jù)流進行恢復(fù)
[0062]輸出單元90用于在封裝程序判斷出待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。
[0063]將待執(zhí)行數(shù)據(jù)流和代碼進行封裝之后,利用得到的封裝程序執(zhí)行該待執(zhí)行數(shù)據(jù)流,在執(zhí)行時如果出錯,則執(zhí)行恢復(fù)待執(zhí)行數(shù)據(jù)流的動作,繼續(xù)執(zhí)行待執(zhí)行數(shù)據(jù)流,如果待執(zhí)行數(shù)據(jù)流未出錯,則輸出執(zhí)行結(jié)果。如果需要對不同的數(shù)據(jù)流進行檢測,改變待執(zhí)行數(shù)據(jù)流即可,而無需修改用于檢測數(shù)據(jù)流的代碼,待執(zhí)行數(shù)據(jù)流能夠在封裝程序中進行正常的執(zhí)行,在得到執(zhí)行結(jié)果后,將執(zhí)行結(jié)果返回給用戶。也就是說,用于恢復(fù)數(shù)據(jù)流的封裝程序和待執(zhí)行數(shù)據(jù)流為獨立的兩個部分,用于檢測數(shù)據(jù)流的代碼不會隨著待執(zhí)行數(shù)據(jù)流的變化而變化,不同的數(shù)據(jù)流可以采用相同的代碼來進行數(shù)據(jù)流的恢復(fù)。
[0064]通過上述實施例,將恢復(fù)數(shù)據(jù)流的代碼進行封裝,在對不同的數(shù)據(jù)流進行恢復(fù)時,更換數(shù)據(jù)流就能完成錯誤的恢復(fù),而無需更改代碼,并且,封裝程序中可以使數(shù)據(jù)流進行正常的執(zhí)行,并且輸出執(zhí)行得到的結(jié)果,不僅避免了更改檢測數(shù)據(jù)流的代碼所導(dǎo)致的錯誤,還不影響數(shù)據(jù)流的正常執(zhí)行,從而解決了現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題。
[0065]優(yōu)選地,執(zhí)行單元包括:第一執(zhí)行模塊,用于執(zhí)行待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤;判斷模塊,用于在執(zhí)行過程出現(xiàn)錯誤時,判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù);提示模塊,用于在判斷當(dāng)前錯誤次數(shù)已經(jīng)達到最大重試次數(shù)時,向用戶發(fā)出執(zhí)行過程出錯的提示信息;以及第二執(zhí)行模塊,用于在判斷出當(dāng)前錯誤次數(shù)小于最大重試次數(shù)時,繼續(xù)執(zhí)行待執(zhí)行數(shù)據(jù)流。
[0066]用戶發(fā)出對數(shù)據(jù)流執(zhí)行操作的指令,封裝程序獲取該指令所對應(yīng)的數(shù)據(jù)流,并執(zhí)行該數(shù)據(jù)流。判斷數(shù)據(jù)流是否出錯,如果數(shù)據(jù)流出錯,則判斷當(dāng)前錯誤的次數(shù)是否已經(jīng)達到最大的出錯次數(shù),即最大重試次數(shù),如果已經(jīng)達到最大重試次數(shù),則向用戶發(fā)出執(zhí)行過程出錯的提示信息,如果當(dāng)前錯誤的次數(shù)小于執(zhí)行過程出錯的提示信息,則繼續(xù)執(zhí)行該指令所對應(yīng)的數(shù)據(jù)流。
[0067]在執(zhí)行過程出錯后,錯誤計數(shù)器記錄一次錯誤,該裝置還包括:記錄模塊,用于在執(zhí)行待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤之后,如果執(zhí)行過程沒有發(fā)生錯誤,則記錄執(zhí)行待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果;發(fā)送模塊,用于將執(zhí)行結(jié)果發(fā)送給用戶;以及清零模塊,用于將錯誤計數(shù)器中的計數(shù)清零。
[0068]封裝程序在執(zhí)行該待執(zhí)行數(shù)據(jù)流沒有出錯時,記錄執(zhí)行結(jié)果,并將執(zhí)行結(jié)果發(fā)送給用戶,即完成該數(shù)據(jù)流的執(zhí)行。由于該待執(zhí)行數(shù)據(jù)流已經(jīng)執(zhí)行完畢,可以將錯誤計數(shù)器中的計數(shù)清零。
[0069]優(yōu)選地,由于封裝程序可以對不同的數(shù)據(jù)流進行恢復(fù),而不同的數(shù)據(jù)流可能對應(yīng)不同的恢復(fù)次數(shù),因此,可以預(yù)先設(shè)置錯誤列表,并在錯誤列表中記錄錯誤的種類,以及每種錯誤的可恢復(fù)次數(shù),即判斷模塊包括:獲取子模塊,用于獲取預(yù)先設(shè)置的錯誤列表;查找子模塊,用于從錯誤列表中查找錯誤;提取子模塊,用于在錯誤列表中查找到錯誤時,提取錯誤列表中記錄的錯誤的最大重試次數(shù);發(fā)送子模塊,用于在錯誤列表中沒有查找到錯誤時,將錯誤發(fā)送給用戶。
[0070]預(yù)先設(shè)置的錯誤列表中記錄了數(shù)據(jù)流A的最大重試次數(shù)為3,還記錄了數(shù)據(jù)流B的最大重試次數(shù)為5,在執(zhí)行待執(zhí)行數(shù)據(jù)流時出錯時,從錯誤列表中查找該錯誤種類,如果能找到該錯誤種類,則判斷該數(shù)據(jù)流的錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù),如果沒有查找到該錯誤種類,則將該錯誤發(fā)送給用戶。在該數(shù)據(jù)流的錯誤次數(shù)達到最大重試次數(shù)時,將該錯誤發(fā)送給用戶,在該數(shù)據(jù)流的錯誤次數(shù)未達到最大重試次數(shù)時,第二執(zhí)行模塊包括:記錄子模塊,用于記錄數(shù)據(jù)流的出錯位置;執(zhí)行子模塊,用于從記錄的出錯位置開始繼續(xù)執(zhí)行待執(zhí)行數(shù)據(jù)流。
[0071]例如,數(shù)據(jù)流包括數(shù)據(jù)1、數(shù)據(jù)2、數(shù)據(jù)3、數(shù)據(jù)4和數(shù)據(jù)5,在執(zhí)行到數(shù)據(jù)3時出錯,則記錄數(shù)據(jù)流執(zhí)行到數(shù)據(jù)3,在錯誤次數(shù)未達到最大重試次數(shù)時從數(shù)據(jù)3開始繼續(xù)執(zhí)行該數(shù)據(jù)流。
[0072]通過上述實施例,將恢復(fù)數(shù)據(jù)流的代碼進行封裝,封裝后的代碼可以對不同數(shù)據(jù)流進行數(shù)據(jù)恢復(fù),根據(jù)錯誤列表能夠查找出錯誤的類型和最大重試次數(shù),根據(jù)最大重試次數(shù)判斷是否對數(shù)據(jù)流進行恢復(fù),也就實現(xiàn)了不修改恢復(fù)數(shù)據(jù)流的代碼的情況下對多個數(shù)據(jù)流進行錯誤恢復(fù),解決了現(xiàn)有技術(shù)中在數(shù)據(jù)流發(fā)生錯誤時進行數(shù)據(jù)流恢復(fù)時容易出錯的問題。
[0073]需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
[0074]在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
[0075]在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置,可通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性或其它的形式。
[0076]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0077]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
[0078]所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可為個人計算機、移動終端、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0079]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)流的處理方法,其特征在于,包括: 獲取待執(zhí)行數(shù)據(jù)流和用于檢測所述數(shù)據(jù)流的代碼; 封裝所述待執(zhí)行數(shù)據(jù)流和所述代碼,得到封裝程序; 利用所述封裝程序執(zhí)行所述待執(zhí)行數(shù)據(jù)流; 在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流出錯時,對所述待執(zhí)行數(shù)據(jù)流進行恢復(fù);以及 在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,利用所述封裝程序執(zhí)行所述待執(zhí)行數(shù)據(jù)流包括: 執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤; 如果所述執(zhí)行過程出現(xiàn)錯誤,則判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù);在判斷所述當(dāng)前錯誤次數(shù)已經(jīng)達到所述最大重試次數(shù)時,向用戶發(fā)出所述執(zhí)行過程出錯的提示信息;以及 在判斷出所述當(dāng)前錯誤次數(shù)小于所述最大重試次數(shù)時,繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤之后,所述方法還包括: 如果所述執(zhí)行過程沒有發(fā)生錯誤,則記錄執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果; 將所述執(zhí)行結(jié)果發(fā)送給所述用戶;以及 將錯誤計數(shù)器中的計數(shù)清零。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到所述最大重試次數(shù)包括: 獲取預(yù)先設(shè)置的錯誤列表; 從所述錯誤列表中查找所述錯誤; 如果在所述錯誤列表中查找到所述錯誤,則提取所述錯誤列表中記錄的所述錯誤的最大重試次數(shù); 如果在所述錯誤列表中沒有查找到所述錯誤,則將所述錯誤發(fā)送給所述用戶。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,在判斷出所述當(dāng)前錯誤次數(shù)小于所述最大重試次數(shù)時,繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流包括: 記錄所述數(shù)據(jù)流的出錯位置; 從記錄的所述出錯位置開始繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
6.一種數(shù)據(jù)流的處理裝置,其特征在于,包括: 獲取單元,用于獲取待執(zhí)行數(shù)據(jù)流和用于檢測所述數(shù)據(jù)流的代碼; 封裝單元,用于封裝所述待執(zhí)行數(shù)據(jù)流和所述代碼,得到封裝程序; 執(zhí)行單元,用于利用所述封裝程序執(zhí)行所述待執(zhí)行數(shù)據(jù)流; 恢復(fù)單元,用于在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流出錯時,對所述待執(zhí)行數(shù)據(jù)流進行恢復(fù);以及 輸出單元,用于在所述封裝程序判斷出所述待執(zhí)行數(shù)據(jù)流未出錯時,輸出執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述執(zhí)行單元包括: 第一執(zhí)行模塊,用于執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤; 判斷模塊,用于在所述執(zhí)行過程出現(xiàn)錯誤時,判斷當(dāng)前錯誤次數(shù)是否已經(jīng)達到最大重試次數(shù); 提示模塊,用于在判斷所述當(dāng)前錯誤次數(shù)已經(jīng)達到所述最大重試次數(shù)時,向用戶發(fā)出所述執(zhí)行過程出錯的提示信息;以及 第二執(zhí)行模塊,用于在判斷出所述當(dāng)前錯誤次數(shù)小于所述最大重試次數(shù)時,繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 記錄模塊,用于在執(zhí)行所述待執(zhí)行數(shù)據(jù)流并判斷執(zhí)行過程是否出現(xiàn)錯誤之后,如果所述執(zhí)行過程沒有發(fā)生錯誤,則記錄執(zhí)行所述待執(zhí)行數(shù)據(jù)流得到的執(zhí)行結(jié)果; 發(fā)送模塊,用于將所述執(zhí)行結(jié)果發(fā)送給所述用戶;以及 清零模塊,用于將錯誤計數(shù)器中的計數(shù)清零。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述判斷模塊包括: 獲取子模塊,用于獲取預(yù)先設(shè)置的錯誤列表; 查找子模塊,用于從所述錯誤列表中查找所述錯誤; 提取子模塊,用于在所述錯誤列表中查找到所述錯誤時,提取所述錯誤列表中記錄的所述錯誤的最大重試次數(shù); 發(fā)送子模塊,用于在所述錯誤列表中沒有查找到所述錯誤時,將所述錯誤發(fā)送給所述用戶。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第二執(zhí)行模塊包括: 記錄子模塊,用于記錄所述數(shù)據(jù)流的出錯位置; 執(zhí)行子模塊,用于從記錄的所述出錯位置開始繼續(xù)執(zhí)行所述待執(zhí)行數(shù)據(jù)流。
【文檔編號】G06F11/36GK104503904SQ201410769128
【公開日】2015年4月8日 申請日期:2014年12月12日 優(yōu)先權(quán)日:2014年12月12日
【發(fā)明者】相利 申請人:北京國雙科技有限公司