版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——Java編程中異常處理的方法Java編程中奇怪處理的方法
Java編程中的奇怪處理是一個(gè)很常見的話題,其實(shí)并沒有好多人真正掌管正確處理奇怪處境的方法和策略,下面是我為大家整理的Java編程中奇怪處理的方法,接待參考~
Java編程中的奇怪處理是一個(gè)很常見的話題了,幾乎任何一門介紹性的Java課程都會(huì)提到奇怪處理。不過,我認(rèn)為好多人其實(shí)并沒有真正掌管正確處理奇怪處境的方法和策略,最多也就不過了解個(gè)約莫,知道點(diǎn)概念。本文就對(duì)三種不同程度和質(zhì)量的Java奇怪處理舉行了議論,所闡述的處理奇怪的方式按手法的上下分為:
好,不好和惡劣三種。
同時(shí)向你供給了一些解決這些問題的技巧。
首先解釋一些java奇怪處理中務(wù)必搞領(lǐng)會(huì)的定義和機(jī)制。Java語言模范將自Error類或RuntimeException類衍生出來的任何違例都稱作“不成檢查”Unchecked奇怪;其他全體奇怪那么稱作“可檢查”Checked奇怪。
所謂可檢查奇怪,是指我們理應(yīng)自行處理的奇怪。至于處理的手段,要么加以操縱trycatch,要么通告throws他們有可能產(chǎn)生。通常,應(yīng)抓獲那些已知如何處理的奇怪,而通告那些不知如何處理的奇怪。
而對(duì)那些不成檢查奇怪來說,他們要么在我們的操縱之外Error,要么是我們首先就不該允許的處境RuntimeException.
至于奇怪的指定,Java的規(guī)矩分外簡樸:一個(gè)方法務(wù)必通告自己可能產(chǎn)生的全體可檢查奇怪。編寫自己的方法時(shí),并不確定要通告出方法實(shí)際可能產(chǎn)生的每一個(gè)奇怪對(duì)象,要想理解什么時(shí)候務(wù)必要方法的throws叢句來通告奇怪,就務(wù)必知道對(duì)一個(gè)奇怪來說,他只有可能在下面四種處境下才會(huì)產(chǎn)生:
1.調(diào)用了可能產(chǎn)生奇怪的方法。譬如BufferedReader類的readLine方法。該方法通告java.io.IOException奇怪
2.偵測(cè)到一個(gè)錯(cuò)誤,并用throw語句產(chǎn)生奇怪。
3.展現(xiàn)一個(gè)編程錯(cuò)誤。譬如a[-1]=0。
4.Java產(chǎn)生內(nèi)部錯(cuò)誤。
假設(shè)展現(xiàn)頭兩種處境之一,務(wù)必報(bào)告計(jì)劃使用自己方法的人:假使使用這個(gè)方法,可能造成一個(gè)奇怪的產(chǎn)生即在方法頭上使用throws,一個(gè)簡樸的記憶方法:
只要含有throw,就要通告throws。假設(shè)一個(gè)方法務(wù)必同時(shí)處理多個(gè)奇怪,就務(wù)必在頭內(nèi)指出全體奇怪。就像下例表示的那樣,用逗號(hào)對(duì)他們舉行分割:
1234567classAnimationpublicImageloadImageStrintsthrowsEOFException,MalformedURLException…………然而,我們不需要通告內(nèi)部java錯(cuò)誤,也不理應(yīng)通告自RuntimeException衍生出來的奇怪。
好的奇怪處理
好奇怪處理供給了處理程序錯(cuò)誤的統(tǒng)一機(jī)制。事實(shí)上,Java語言通過向調(diào)用者提出奇怪警告的方式而顯著地提升了軟件開發(fā)中的奇怪處理才能。這種方式把Java語言中的.“方法method”舉行了擴(kuò)展和鞏固,使之包括了自身的錯(cuò)誤條件。下面就讓我們看一個(gè)例子,這個(gè)例子說領(lǐng)略這種處境。
以下是FileInputStream構(gòu)造器之一的原型:
publicFileInputStreamStringnamethrowsFileNotFoundExceptionJava
的方法和構(gòu)造器務(wù)必聲明他們?cè)诒徽{(diào)用時(shí)可能“扔出”的奇怪,采用的關(guān)鍵字就是“throws”。這種在方法原型中展現(xiàn)的奇怪提示增加了編程的穩(wěn)當(dāng)性。
顯而易見,這種方式是向方法的調(diào)用者提示了可能展現(xiàn)的奇怪條件,這樣調(diào)用者就可以對(duì)這些奇怪作出適當(dāng)?shù)南鄳?yīng)處理。以下代碼示意我們是如何捕獲并且處理FileNotFoundException這一奇怪的:
1234567891011tryFileInputStreamfis=newFileInputStreamargs[0];//othercodehere...catchFileNotFoundExceptionfnfeSystem.out.printlnFile:+args[0]+notfound.Aborting.;System.exit1;Java奇怪處理還有其他一些優(yōu)秀的特性,這就是可檢查奇怪、用戶定義奇怪和在JDK1.4中推出的新型Java記錄APIJavaLoggingAPI。java.lang.Exception的全體子類都屬于可檢查奇怪??蓹z查奇怪checkedexception是扔出該奇怪的方法所務(wù)必提示的奇怪,這種奇怪務(wù)必被捕獲或者向調(diào)用者提示。用戶定義奇怪User-definedexceptions是定制的奇怪類,這種奇怪類擴(kuò)展了java.lang.Exception類。優(yōu)良的Java程序規(guī)定定制奇怪封裝、報(bào)告和處理他們自己獨(dú)有的處境。最新的Java記錄APIloggingAPI那么可以集中記錄奇怪。
不好的Java奇怪處理
不好的一面包括兩種處境:濫用不成檢查奇怪uncheckedexceptions和濫用catchall構(gòu)造器等。這兩種方式都使得問題變得繁雜起來。
有一種類別的奇怪屬于RuntimeException的子類,這種奇怪不會(huì)受到編譯器的檢查。譬如,NullPointerException和ArrayStoreException就是這種類型奇怪的實(shí)例。程序員可以對(duì)RuntimeException舉行子類化以回避檢查奇怪的限制,從而便于產(chǎn)生這些奇怪的方法為其調(diào)用者所使用。
專業(yè)的開發(fā)團(tuán)隊(duì)?wèi)?yīng)當(dāng)只允許在很少的處境下才可以這樣做。
其次種奇怪處理的惡習(xí)是catchall構(gòu)造器。所謂的“catchall構(gòu)造器”就是一種奇怪捕獲代碼模塊,它可以處理全體扔給它的可能奇怪。
以下是catchall處理器的實(shí)例:
123456789try//codeherewithcheckedexceptionscatchThrowablett.printStackTrace;我得供認(rèn),我自己在編寫一般程序的時(shí)候就曾經(jīng)用過這種技術(shù);但是,在編寫關(guān)鍵程序的時(shí)候這種類型的構(gòu)造器確定要制止使用,除非他們被授權(quán)可以和中央錯(cuò)誤處理器聯(lián)合使用才可以這樣做。
除此之外,catchall構(gòu)造器不過只是一種通過制止錯(cuò)誤處理而加快編程進(jìn)度的機(jī)制。
奇怪處理的一個(gè)缺乏之處是難以采用優(yōu)良的錯(cuò)誤處理策略。從低容內(nèi)存狀態(tài)恢復(fù)、寫入錯(cuò)誤和算法錯(cuò)誤等奇怪處境都不是輕易能得到解決的。你可以嘗試一下循環(huán)、垃圾收集和指點(diǎn)用戶等常用技術(shù)來應(yīng)付以上的局面。
惡劣的處理方法
和大量Java特性及其API類似,Java的奇怪處理機(jī)制也有“霸王硬上弓”類的滑稽錯(cuò)誤。比方說,為了扔出某個(gè)奇怪竟然毫不躊躇地用“new”關(guān)鍵詞為其調(diào)配內(nèi)存就是這樣的例子。
我自己不知道有多少次就由于犯了這種錯(cuò)誤而在肅穆的編譯器面前屢屢碰壁。在這種處境下,我們其實(shí)都是在侍奉語言而不是讓語言為我們所用。還有我們碰見的OutOfMemoryErrors就是奇怪處理的缺陷。這一處理過程是:
使用finally模塊關(guān)閉文件,解析奇怪以得到展現(xiàn)問題的方法和代碼行。在這一過程之內(nèi)最大的缺陷是需要捕獲OutOfMemoryError,而這一奇怪卻并不是可檢查奇怪!想想看,內(nèi)存耗盡是相當(dāng)常見的處境。任何與內(nèi)存使用狀態(tài)精細(xì)相關(guān)的程序都應(yīng)當(dāng)捕獲和處理這一錯(cuò)誤。
使用奇怪時(shí)的一些建議
1.奇怪操縱的設(shè)計(jì)宗旨并不是用來代替一些簡樸的測(cè)試。只有在奇怪處境下才使用奇怪!
2.不要過分細(xì)化奇怪。不要在每個(gè)語句上都加上奇怪處理,最好將整個(gè)任務(wù)都放在try塊內(nèi)。假設(shè)其
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年一級(jí)醫(yī)院護(hù)理工作計(jì)劃怎么寫
- 2025二級(jí)建造師b證真題答案詳解
- 公司2026年安全生產(chǎn)工作計(jì)劃
- 2025年聚苯醚(PPO)及合金項(xiàng)目合作計(jì)劃書
- 第2章 簡單事件的概率期末復(fù)習(xí)(知識(shí)清單)(答案版)-浙教版(2024)九上
- 2025年家用空氣調(diào)節(jié)器項(xiàng)目建議書
- 味覺和嗅覺的課件
- 動(dòng)脈栓塞護(hù)理查房
- 2025年便攜式地質(zhì)雷達(dá)項(xiàng)目建議書
- 2025年燈具配附件:觸點(diǎn)項(xiàng)目發(fā)展計(jì)劃
- 如果歷史是一群喵16
- 赫茲伯格-雙因素理論
- 華為HCIA存儲(chǔ)H13-611認(rèn)證培訓(xùn)考試題庫(匯總)
- 社會(huì)主義發(fā)展史知到章節(jié)答案智慧樹2023年齊魯師范學(xué)院
- 美國史智慧樹知到答案章節(jié)測(cè)試2023年東北師范大學(xué)
- GB/T 15924-2010錫礦石化學(xué)分析方法錫量測(cè)定
- GB/T 14525-2010波紋金屬軟管通用技術(shù)條件
- GB/T 11343-2008無損檢測(cè)接觸式超聲斜射檢測(cè)方法
- GB/T 1040.3-2006塑料拉伸性能的測(cè)定第3部分:薄膜和薄片的試驗(yàn)條件
- 教師晉級(jí)專業(yè)知識(shí)和能力證明材料
- 申報(bào)專業(yè)技術(shù)職稱課件-
評(píng)論
0/150
提交評(píng)論