下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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簡介本文檔介紹了系統(tǒng)異常設(shè)計(jì)的標(biāo)準(zhǔn),所有數(shù)銀在線的系統(tǒng)異常設(shè)計(jì)今后均按照本文制定的標(biāo)準(zhǔn)實(shí)施。異常分為系統(tǒng)級和業(yè)務(wù)級,系統(tǒng)級異常面向系統(tǒng)維護(hù)和開發(fā)人員,業(yè)務(wù)級的異常面向系統(tǒng)的使用者, 即業(yè)務(wù)人員,一般要根據(jù)具體系統(tǒng)的業(yè)務(wù)規(guī)那么去定義。本文對系統(tǒng)級的異常做了定義,對業(yè)務(wù)級的異常做了實(shí)現(xiàn)模型的設(shè)計(jì)。1.1背景
2、當(dāng)前所有數(shù)銀系統(tǒng)中,對異常的定義及提示都是各成一套體系,對異常的捕捉及處理沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。尤其是異常的命名,提示信息,拋出及處理的位置都非?;靵y,導(dǎo)致系 統(tǒng)程序在出錯(cuò)后的維護(hù)非常不便,難以快速定位至出錯(cuò)的根源。業(yè)務(wù)級的異常對系統(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)系來顯示對 應(yīng)的提示消息。1.3定義和術(shù)語系統(tǒng)級異常:系統(tǒng)運(yùn)行時(shí)的異常,如數(shù)據(jù)庫連接失敗,程序中的空
3、指針異常,效勞頁面無法 找到等,通常無需系統(tǒng)使用者關(guān)注的問題,即因?yàn)槌绦虺鲥e(cuò)而導(dǎo)致的問題。業(yè)務(wù)級異常:和業(yè)務(wù)邏輯相關(guān)的異常,即用戶的操作導(dǎo)致了某個(gè)業(yè)務(wù)流程無法進(jìn)行,造成業(yè)務(wù)數(shù)據(jù)錯(cuò)誤時(shí)發(fā)生的異常,和系統(tǒng)本身的運(yùn)行沒有關(guān)系。1.4參考文檔無2異常設(shè)計(jì)異常分為系統(tǒng)級和業(yè)務(wù)級, 本節(jié)將詳細(xì)說明兩種異常的定義,在系統(tǒng)程序中的實(shí)現(xiàn), 給出了異常拋出,捕獲和處理的流程機(jī)制。2.1系統(tǒng)級異常系統(tǒng)級異常指的是系統(tǒng)程序本身出現(xiàn)的錯(cuò)誤,產(chǎn)生的異常,這類異常按級別也可以分為三個(gè)等級,如表2-1所示,列出了各種系統(tǒng)級異常的定義。系統(tǒng)異常級別異常定義異常實(shí)例程序級因程序代碼編寫錯(cuò)誤而產(chǎn)生的,而此 類異常一般在系統(tǒng)上線前的
4、測試可以 檢查出來空指針異??蚣芗壪到y(tǒng)程序代碼調(diào)用一些第三方類庫時(shí) 出現(xiàn)的錯(cuò)誤,比方框架本身的錯(cuò)誤線程數(shù)量耗盡底層系統(tǒng)操作系統(tǒng)相關(guān)的底層錯(cuò)誤,一般是系 統(tǒng)底層出現(xiàn)了錯(cuò)誤,如網(wǎng)絡(luò)中斷,和 程序本身無關(guān)。Broken pipe ,網(wǎng)絡(luò)中斷表2-1系統(tǒng)級異甬定乂系統(tǒng)級的異常在我們現(xiàn)有系統(tǒng)的分層結(jié)構(gòu)中,會在各個(gè)層中出現(xiàn),如圖2-1所示各層異常出現(xiàn)的位置。對系統(tǒng)級的異常,系統(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ù)級異常業(yè)務(wù)級異常的定義和處理必須結(jié)合實(shí)際的業(yè)務(wù)規(guī)那么進(jìn)行定義,與系統(tǒng)程序本身以及底層系統(tǒng)無關(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ù)級的異常一般可以定義為unChecked異常,即在運(yùn)行時(shí)拋出的,根據(jù)業(yè)務(wù)層執(zhí)行的結(jié)果,對照業(yè)務(wù)規(guī)那么來拋出業(yè)務(wù)的異常,然后通過一個(gè)統(tǒng)一的業(yè)
6、務(wù)異常處理來檢查該業(yè)務(wù)異常的類型,最終提示給用戶面向業(yè)務(wù)的錯(cuò)誤信息。圖2-2描述了業(yè)務(wù)級異常定義,處理的模型。圖2-2業(yè)務(wù)級異常模型通過定義一個(gè)BusinessException集成RuntimeException來抽象所有的業(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)鍵字來實(shí)現(xiàn),try,catch,throw ,throws, finally。具體的異常處理結(jié)構(gòu)由try -.catch .finajj來實(shí)現(xiàn)。try塊存放可能出現(xiàn)異常的java語句,catch用來捕獲發(fā)生的異常,并對異常進(jìn)行處理。Finally塊用來去除程序中未釋放的資源。不管理try塊的代碼如何返回,finally塊都總是被執(zhí)行。Java給錯(cuò)誤進(jìn)行了統(tǒng)一的分類,通過擴(kuò)展Exception類或其子類來實(shí)現(xiàn)。 從而防止了相同的錯(cuò)誤可能在不同的方法中具有不同的錯(cuò)誤信息。在不同的方法中出現(xiàn)相同的錯(cuò)誤時(shí),
8、只需要throw相同的異常對象即可。通過異常類,可以給異常更為詳細(xì),對用戶更為有用的錯(cuò)誤信息。以便于用戶進(jìn)行跟蹤和調(diào)試程序。把正確的返回結(jié)果與錯(cuò)誤信息別離。降低了程序的復(fù)雜度。調(diào)用者無需要對返回結(jié)果進(jìn)行更多的了解。強(qiáng)制調(diào)用者進(jìn)行異常處理,提高程序的質(zhì)量。當(dāng)一個(gè)方法聲明需要拋出一個(gè)異常時(shí),那么調(diào)用者必須使用try -.catch塊對異常進(jìn)行處理。當(dāng)然調(diào)用者也可以讓異常繼續(xù)往上一層拋出。根據(jù)Java的這中特性,我們設(shè)計(jì)了一個(gè)異常拋出及處理的模型,如圖2-3所示,今后所有系統(tǒng)開發(fā)中的異常設(shè)計(jì)均按照該模型的標(biāo)準(zhǔn)進(jìn)行??偟脑敲词撬袠I(yè)務(wù)級的異常均使用RuntimeException,即所有業(yè)務(wù)接口均拋
9、出該異常,所有系統(tǒng)級的異常在業(yè)務(wù)層中全部處理 掉并重新封裝為一個(gè)統(tǒng)一的業(yè)務(wù)異??商崾鞠到y(tǒng)錯(cuò)誤,請聯(lián)系開發(fā)人員,并將系統(tǒng)錯(cuò)誤記錄在后臺日志,無需展現(xiàn)給系統(tǒng)使用者3標(biāo)準(zhǔn)說明如果一個(gè)異常是致命的,不可恢復(fù)的?;蛘哒{(diào)用者去捕獲它沒有任何益處,使用unChecked異常。如果一個(gè)異常是可以恢復(fù)的,可以被調(diào)用者正確處理的,使用checked異 常。在使用unChecked異常時(shí),必須在在方法聲明中詳細(xì)的說明該方法可能會拋出的unChekced異常。由調(diào)用者自己去決定是否捕獲unChecked異常到底什么時(shí)候使用checked異常,什么時(shí)候使用unChecked異常?并沒有一個(gè)絕對的標(biāo) 準(zhǔn)。當(dāng)所有調(diào)用者必須處理這個(gè)異常,可以讓調(diào)用者進(jìn)行重試操作;或者該異常相當(dāng)于該方法的第二個(gè)返回值。使用checked異常。這個(gè)異常僅是少數(shù)比擬高級的調(diào)用者才能處理,一 般的調(diào)用者不能正確的處理。使unchecked異常。有能力處理的調(diào)用者可以進(jìn)行高級處理,一般調(diào)用者干脆就
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度勞動(dòng)合同解除與離職員工離職手續(xù)辦理及經(jīng)濟(jì)補(bǔ)償合同3篇
- 2025年度鋼結(jié)構(gòu)加固施工承包合同模板
- 2025年度農(nóng)村個(gè)人耕地租賃與農(nóng)業(yè)信息化建設(shè)合同3篇
- 農(nóng)村農(nóng)業(yè)勞務(wù)用工合同(2025年度)勞動(dòng)權(quán)益維護(hù)協(xié)議
- 2025年度農(nóng)村集體土地租賃合同范本(鄉(xiāng)村旅游)
- 二零二五年度高速鐵路信號系統(tǒng)安裝合同安裝協(xié)議3篇
- 寵物生活館2025年度寄養(yǎng)及美容服務(wù)合同3篇
- 二零二五年度員工職務(wù)秘密及保密信息處理協(xié)議3篇
- 2025年度年度文化產(chǎn)業(yè)發(fā)展合伙人合同協(xié)議書3篇
- 2025年度養(yǎng)殖場勞務(wù)合同(畜禽疫病防控與治療)3篇
- 臨床麻醉學(xué)試卷及答案
- 混合性焦慮和抑郁障礙的護(hù)理查房
- MOOC 發(fā)展心理學(xué)-北京大學(xué) 中國大學(xué)慕課答案
- 克羅恩病病例分享
- 《養(yǎng)老護(hù)理員》-課件:協(xié)助老年人轉(zhuǎn)換體位
- 山東省高中生物教學(xué)大綱
- 2024中考語文《水滸傳》歷年真題(解析版)
- 接地電阻測試儀的操作課件
- 《機(jī)修工基礎(chǔ)培訓(xùn)》課件
- 品質(zhì)黃燜雞加盟活動(dòng)策劃
- DLT 754-2013 母線焊接技術(shù)規(guī)程
評論
0/150
提交評論