設(shè)計(jì)文檔系統(tǒng)異常設(shè)計(jì)_第1頁(yè)
設(shè)計(jì)文檔系統(tǒng)異常設(shè)計(jì)_第2頁(yè)
設(shè)計(jì)文檔系統(tǒng)異常設(shè)計(jì)_第3頁(yè)
設(shè)計(jì)文檔系統(tǒng)異常設(shè)計(jì)_第4頁(yè)
設(shè)計(jì)文檔系統(tǒng)異常設(shè)計(jì)_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)銀在線技術(shù)開發(fā)部文檔系統(tǒng)異常設(shè)計(jì)標(biāo)準(zhǔn)版本V1.0Powered By王吉晨MSc certificated By British Computer SocietySenior Java & Java RTS DeveloperFormer NASA Scientist系統(tǒng)異常設(shè)計(jì)標(biāo)準(zhǔn)1簡(jiǎn)介本文檔介紹了系統(tǒng)異常設(shè)計(jì)的標(biāo)準(zhǔn),所有數(shù)銀在線的系統(tǒng)異常設(shè)計(jì)今后均按照本文制定的標(biāo)準(zhǔn)實(shí)施。異常分為系統(tǒng)級(jí)和業(yè)務(wù)級(jí),系統(tǒng)級(jí)異常面向系統(tǒng)維護(hù)和開發(fā)人員,業(yè)務(wù)級(jí)的異常面向系統(tǒng)的使用者, 即業(yè)務(wù)人員,一般要根據(jù)具體系統(tǒng)的業(yè)務(wù)規(guī)那么去定義。本文對(duì)系統(tǒng)級(jí)的異常做了定義,對(duì)業(yè)務(wù)級(jí)的異常做了實(shí)現(xiàn)模型的設(shè)計(jì)。1.1背景

2、當(dāng)前所有數(shù)銀系統(tǒng)中,對(duì)異常的定義及提示都是各成一套體系,對(duì)異常的捕捉及處理沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。尤其是異常的命名,提示信息,拋出及處理的位置都非常混亂,導(dǎo)致系 統(tǒng)程序在出錯(cuò)后的維護(hù)非常不便,難以快速定位至出錯(cuò)的根源。業(yè)務(wù)級(jí)的異常對(duì)系統(tǒng)使用者的提示也不夠友好和專業(yè)。1.2目標(biāo)建立異常的定義,處理,提示機(jī)制的標(biāo)準(zhǔn),使異常的處理能夠統(tǒng)一管理,異常的提示信息可以通過配置實(shí)現(xiàn),而非寫死在系統(tǒng)代碼中。異常類型的判斷均在系統(tǒng)的效勞層進(jìn)行,最終將結(jié)果返回給展現(xiàn)層, 展現(xiàn)層通過事先配置好的異常代碼和提示消息的映射關(guān)系來(lái)顯示對(duì) 應(yīng)的提示消息。1.3定義和術(shù)語(yǔ)系統(tǒng)級(jí)異常:系統(tǒng)運(yùn)行時(shí)的異常,如數(shù)據(jù)庫(kù)連接失敗,程序中的空

3、指針異常,效勞頁(yè)面無(wú)法 找到等,通常無(wú)需系統(tǒng)使用者關(guān)注的問題,即因?yàn)槌绦虺鲥e(cuò)而導(dǎo)致的問題。業(yè)務(wù)級(jí)異常:和業(yè)務(wù)邏輯相關(guān)的異常,即用戶的操作導(dǎo)致了某個(gè)業(yè)務(wù)流程無(wú)法進(jìn)行,造成業(yè)務(wù)數(shù)據(jù)錯(cuò)誤時(shí)發(fā)生的異常,和系統(tǒng)本身的運(yùn)行沒有關(guān)系。1.4參考文檔無(wú)2異常設(shè)計(jì)異常分為系統(tǒng)級(jí)和業(yè)務(wù)級(jí), 本節(jié)將詳細(xì)說明兩種異常的定義,在系統(tǒng)程序中的實(shí)現(xiàn), 給出了異常拋出,捕獲和處理的流程機(jī)制。2.1系統(tǒng)級(jí)異常系統(tǒng)級(jí)異常指的是系統(tǒng)程序本身出現(xiàn)的錯(cuò)誤,產(chǎn)生的異常,這類異常按級(jí)別也可以分為三個(gè)等級(jí),如表2-1所示,列出了各種系統(tǒng)級(jí)異常的定義。系統(tǒng)異常級(jí)別異常定義異常實(shí)例程序級(jí)因程序代碼編寫錯(cuò)誤而產(chǎn)生的,而此 類異常一般在系統(tǒng)上線前的

4、測(cè)試可以 檢查出來(lái)空指針異??蚣芗?jí)系統(tǒng)程序代碼調(diào)用一些第三方類庫(kù)時(shí) 出現(xiàn)的錯(cuò)誤,比方框架本身的錯(cuò)誤線程數(shù)量耗盡底層系統(tǒng)操作系統(tǒng)相關(guān)的底層錯(cuò)誤,一般是系 統(tǒng)底層出現(xiàn)了錯(cuò)誤,如網(wǎng)絡(luò)中斷,和 程序本身無(wú)關(guān)。Broken pipe ,網(wǎng)絡(luò)中斷表2-1系統(tǒng)級(jí)異甬定乂系統(tǒng)級(jí)的異常在我們現(xiàn)有系統(tǒng)的分層結(jié)構(gòu)中,會(huì)在各個(gè)層中出現(xiàn),如圖2-1所示各層異常出現(xiàn)的位置。對(duì)系統(tǒng)級(jí)的異常,系統(tǒng)將提供一個(gè)統(tǒng)一的提示信息如提示用戶系統(tǒng)效勞不可用,并將詳細(xì)地記錄出錯(cuò)的程序堆棧信息,供開發(fā)人員進(jìn)行錯(cuò)誤修復(fù)。以業(yè)務(wù)邏輯層為界,所有在業(yè)務(wù)邏輯層內(nèi)和業(yè)務(wù)層之后所發(fā)生的系統(tǒng)異常,均拋至業(yè)務(wù)邏輯層進(jìn)行處理包括框架本身的異常,最終將結(jié)果傳遞

5、給展現(xiàn)層進(jìn)行錯(cuò)誤消息的提示。2.2業(yè)務(wù)級(jí)異常業(yè)務(wù)級(jí)異常的定義和處理必須結(jié)合實(shí)際的業(yè)務(wù)規(guī)那么進(jìn)行定義,與系統(tǒng)程序本身以及底層系統(tǒng)無(wú)關(guān),即在系統(tǒng)運(yùn)行時(shí),系統(tǒng)程序和底層程序沒有出錯(cuò),該錯(cuò)誤是面向業(yè)務(wù)層面的,為 業(yè)務(wù)出錯(cuò)。Java異常分為兩大類:checked異常和unChecked異常。所有繼承java.lang.Exception的異常都屬于checked異常。所有繼承java.lang.RuntimeException的異常 都屬于unChecked異常。業(yè)務(wù)級(jí)的異常一般可以定義為unChecked異常,即在運(yùn)行時(shí)拋出的,根據(jù)業(yè)務(wù)層執(zhí)行的結(jié)果,對(duì)照業(yè)務(wù)規(guī)那么來(lái)拋出業(yè)務(wù)的異常,然后通過一個(gè)統(tǒng)一的業(yè)

6、務(wù)異常處理來(lái)檢查該業(yè)務(wù)異常的類型,最終提示給用戶面向業(yè)務(wù)的錯(cuò)誤信息。圖2-2描述了業(yè)務(wù)級(jí)異常定義,處理的模型。圖2-2業(yè)務(wù)級(jí)異常模型通過定義一個(gè)BusinessException集成RuntimeException來(lái)抽象所有的業(yè)務(wù)異常,讓所有的業(yè)務(wù)層的效勞接口中的方法,均都拋出業(yè)務(wù)異常,最終由調(diào)用該業(yè)務(wù)接口的類去捕獲并處-業(yè)務(wù)邏輯層數(shù) 據(jù)E久層圖2-1各層的系統(tǒng)異常理該異常展現(xiàn)層調(diào)用那么提示錯(cuò)誤消息,效勞層調(diào)用那么進(jìn)行相關(guān)業(yè)務(wù)處理。舉例說明,如在圖中定義的用戶不存在異常UserNotExistException可用于用戶登錄 時(shí),查找比照用戶信息,發(fā)現(xiàn)用戶信息不正確那么拋出該異常。在調(diào)用該效勞

7、的展現(xiàn)層中捕獲該異常并根據(jù)該異常的名稱返回提示信息。2.3異常模型設(shè)計(jì)Java異常處理通過五個(gè)關(guān)鍵字來(lái)實(shí)現(xiàn),try,catch,throw ,throws, finally。具體的異常處理結(jié)構(gòu)由try -.catch .finajj來(lái)實(shí)現(xiàn)。try塊存放可能出現(xiàn)異常的java語(yǔ)句,catch用來(lái)捕獲發(fā)生的異常,并對(duì)異常進(jìn)行處理。Finally塊用來(lái)去除程序中未釋放的資源。不管理try塊的代碼如何返回,finally塊都總是被執(zhí)行。Java給錯(cuò)誤進(jìn)行了統(tǒng)一的分類,通過擴(kuò)展Exception類或其子類來(lái)實(shí)現(xiàn)。 從而防止了相同的錯(cuò)誤可能在不同的方法中具有不同的錯(cuò)誤信息。在不同的方法中出現(xiàn)相同的錯(cuò)誤時(shí),

8、只需要throw相同的異常對(duì)象即可。通過異常類,可以給異常更為詳細(xì),對(duì)用戶更為有用的錯(cuò)誤信息。以便于用戶進(jìn)行跟蹤和調(diào)試程序。把正確的返回結(jié)果與錯(cuò)誤信息別離。降低了程序的復(fù)雜度。調(diào)用者無(wú)需要對(duì)返回結(jié)果進(jìn)行更多的了解。強(qiáng)制調(diào)用者進(jìn)行異常處理,提高程序的質(zhì)量。當(dāng)一個(gè)方法聲明需要拋出一個(gè)異常時(shí),那么調(diào)用者必須使用try -.catch塊對(duì)異常進(jìn)行處理。當(dāng)然調(diào)用者也可以讓異常繼續(xù)往上一層拋出。根據(jù)Java的這中特性,我們?cè)O(shè)計(jì)了一個(gè)異常拋出及處理的模型,如圖2-3所示,今后所有系統(tǒng)開發(fā)中的異常設(shè)計(jì)均按照該模型的標(biāo)準(zhǔn)進(jìn)行??偟脑敲词撬袠I(yè)務(wù)級(jí)的異常均使用RuntimeException,即所有業(yè)務(wù)接口均拋

9、出該異常,所有系統(tǒng)級(jí)的異常在業(yè)務(wù)層中全部處理 掉并重新封裝為一個(gè)統(tǒng)一的業(yè)務(wù)異??商崾鞠到y(tǒng)錯(cuò)誤,請(qǐng)聯(lián)系開發(fā)人員,并將系統(tǒng)錯(cuò)誤記錄在后臺(tái)日志,無(wú)需展現(xiàn)給系統(tǒng)使用者3標(biāo)準(zhǔn)說明如果一個(gè)異常是致命的,不可恢復(fù)的?;蛘哒{(diào)用者去捕獲它沒有任何益處,使用unChecked異常。如果一個(gè)異常是可以恢復(fù)的,可以被調(diào)用者正確處理的,使用checked異 常。在使用unChecked異常時(shí),必須在在方法聲明中詳細(xì)的說明該方法可能會(huì)拋出的unChekced異常。由調(diào)用者自己去決定是否捕獲unChecked異常到底什么時(shí)候使用checked異常,什么時(shí)候使用unChecked異常?并沒有一個(gè)絕對(duì)的標(biāo) 準(zhǔn)。當(dāng)所有調(diào)用者必須處理這個(gè)異常,可以讓調(diào)用者進(jìn)行重試操作;或者該異常相當(dāng)于該方法的第二個(gè)返回值。使用checked異常。這個(gè)異常僅是少數(shù)比擬高級(jí)的調(diào)用者才能處理,一 般的調(diào)用者不能正確的處理。使unchecked異常。有能力處理的調(diào)用者可以進(jìn)行高級(jí)處理,一般調(diào)用者干脆就

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論