




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java基礎(chǔ)課程內(nèi)容異常理解異常的概念運(yùn)用 try 塊、catch 塊和 finally 塊處理異常運(yùn)用多重 catch 塊處理異常運(yùn)用嵌套 try/catch 塊處理異常運(yùn)用關(guān)鍵字 throw 和 throws 處理異常運(yùn)用JAVA編寫和使用自定義異常集合List,Set,MapProperties類什么是異常異常(Exception)是一種特殊的運(yùn)行錯(cuò)誤,是在程序運(yùn)行過程中發(fā)生、會(huì)打斷程序正常執(zhí)行的錯(cuò)誤。Java異常Java程序運(yùn)行過程中所發(fā)生的異常事件可分為兩類:錯(cuò)誤(Error):JVM系統(tǒng)內(nèi)部錯(cuò)誤、資源耗盡等嚴(yán)重情況違例(Exception): 其它因編程錯(cuò)誤或偶然的外在因素導(dǎo)致的一
2、般性問題,例如:對(duì)負(fù)數(shù)開平方根空指針訪問試圖讀取不存在的文件異常體系結(jié)構(gòu)ExceptionArithmeticExceptionNullPointerExceptionObjectThrowableErrorThreadDeathSQLExceptionRuntimeExceptionNumberFormatExceptionAWTError異常體系結(jié)構(gòu)Error類對(duì)象由Java虛擬機(jī)生成并拋出;無(wú)法恢復(fù)OutOfMerroyErrorException類對(duì)象由應(yīng)用程序處理或拋出Exception編譯錯(cuò)誤運(yùn)行異常編譯錯(cuò)誤編譯錯(cuò)誤是由于所編寫的程序存在語(yǔ)法問題,未能通過有源代碼到目標(biāo)代碼得的轉(zhuǎn)換
3、,這個(gè)錯(cuò)誤可以簡(jiǎn)單地有編譯系統(tǒng)查出來(lái)。checkedException運(yùn)行時(shí)異常運(yùn)行錯(cuò)誤是在程序運(yùn)行過程中產(chǎn)生的錯(cuò)誤。如:nullPointerException ArrayIndexOutOfBoundsException.常見的異常 10文件結(jié)束EOFException找不到文件FileNotFoundExceptionI/O 異常的根類IOException字符串到 float 型數(shù)字的轉(zhuǎn)換無(wú)效NumberFormatException不能加載所需的類ClassNotFoundException方法接收到非法參數(shù)IllegalArgumentException數(shù)組大小小于或大于實(shí)際的數(shù)組
4、大小ArrayIndexOutOfBoundException嘗試訪問 null 對(duì)象成員NullPointerException許多 java.lang 異常的基類RuntimeException異常層次結(jié)構(gòu)的根類Exception算術(shù)錯(cuò)誤情形,如以零作除數(shù)ArithmeticException線程中斷InterruptedException說(shuō) 明異 常異常處理機(jī)制程序員通常只能處理違例(Exception),而對(duì)錯(cuò)誤(Error)無(wú)能為力對(duì)于RuntimeException,通常不需要我們?nèi)ゲ东@,這類異常由Java運(yùn)行系統(tǒng)自動(dòng)拋出并自動(dòng)處理。處理異常捕獲異常Try,catch,finall
5、y拋出異常Throws,throw捕獲異常捕獲異常是通過try-catch-finally語(yǔ)句實(shí)現(xiàn)的。try./可能產(chǎn)生違例的代碼catch( ExceptionName1 e )./當(dāng)產(chǎn)生ExceptionName1型違例時(shí)的處置措施catch( ExceptionName2 e ). /當(dāng)產(chǎn)生ExceptionName2型違例時(shí)的處置措施 finally. /無(wú)條件執(zhí)行的語(yǔ)句捕獲異常try 捕獲違例的第一步是用try語(yǔ)句塊選定捕獲違例的范圍。catch 在catch語(yǔ)句塊中是對(duì)違例對(duì)象進(jìn)行處理的代碼,每個(gè)try語(yǔ)句塊可以伴隨一個(gè)或多個(gè)catch語(yǔ)句,用于處理可能產(chǎn)生的不同類型的違例對(duì)象。與
6、其它對(duì)象一樣,可以訪問一個(gè)違例對(duì)象的成員變量或調(diào)用它的方法。getMessage( ) 方法,用來(lái)得到有關(guān)異常事件的信息printStackTrace( )用來(lái)跟蹤異常事件發(fā)生時(shí)執(zhí)行堆棧的內(nèi)容。多重 catch一段代碼可能會(huì)生成多個(gè)異常當(dāng)引發(fā)異常時(shí),會(huì)按順序來(lái)查看每個(gè) catch 語(yǔ)句,并執(zhí)行第一個(gè)類型與異常類型匹配的語(yǔ)句執(zhí)行其中的一條 catch 語(yǔ)句之后,其他的 catch 語(yǔ)句將被忽略 15try . catch(ArrayIndexOutOfBoundsException e) catch(Exception e) 多重 catch使用多重 catch 語(yǔ)句時(shí),異常子類一定要位于異常父
7、類之前16try . catch(ArrayIndexOutOfBoundsException e) . catch(Exception e) 捕獲異常finally捕獲例外的最后一步是通過finally語(yǔ)句為例外處理提供一個(gè)統(tǒng)一的出口,使得在控制流轉(zhuǎn)到程序的其它部分以前,能夠?qū)Τ绦虻臓顟B(tài)作統(tǒng)一的管理。不論在try代碼塊中是否發(fā)生了異常事件,finally塊中的語(yǔ)句都會(huì)被執(zhí)行。finally語(yǔ)句是任選的如果try或者catch塊有return 指令,finally還是會(huì)被執(zhí)行,流程先跳到finally然后再回到return指令異常處理舉例(1)class ExceptionCatchpubli
8、c static void main(String args)int it=1,3,4;tryfor(int i=0;i=3;i+)System.out.println(iti);catch(ArrayIndexOutOfBoundsException e)System.out.println(oh my god! is wrong);異常處理塊的一般形式try / 要監(jiān)控錯(cuò)誤的代碼塊 methodGeneratingException(); catch (Exception e) / Exception e 的異常處理程序 finally / 在 try 結(jié)束前要執(zhí)行的代碼塊 cleanup
9、();19拋出異常如果一個(gè)方法(中的語(yǔ)句執(zhí)行時(shí))可能生成某種Exception,但是并不能確定如何處理這種違例,則此方法應(yīng)聲明拋棄違例throws聲明異常表明該方法將不對(duì)這些違例進(jìn)行處理,而由該方法的調(diào)用者負(fù)責(zé)處理實(shí)例throws異常聲明如果使用 throw異常是通過關(guān)鍵字 throw 拋出,程序可以用throw語(yǔ)句引發(fā)明確的異常。如: try if(flag0) throw new NullPointerException();throw語(yǔ)句的操作數(shù)一定是Throwable類類型或Throwable子類類型的一個(gè)對(duì)象。22使用 throws示例class ThrowsDemo static
10、void throwOne() throws IllegalAccessException System.out.println(在throwOne中.); throw new IllegalAccessException(非法訪問異常); public static void main(String args) try throwOne(); catch(IllegalAccessException e) System.out.println(捕獲+e); 23回顧重寫規(guī)則如果父類中的方法拋出多個(gè)異常,則子類中的覆蓋方法要么拋出相同的異常,要么拋出異常的子類,但不能拋出新的異常。自定義異常c
11、lass MyException extends Exception MyException(String reason)this.reason=reason;String reason;/public String getMessage()return reason;區(qū)別public String getReason()return reason;Collection(集合)集合是將多個(gè)元素組成一個(gè)單元的對(duì)象集合是將多個(gè)對(duì)象組合在一起,對(duì)這些對(duì)象進(jìn)行存儲(chǔ)、檢索等操縱集合 JDK1.4 集合接口框圖這些類都保存在java.util包當(dāng)中。集合Collection:集合層次中的根接口,JDK沒有
12、提供這個(gè)接口直接的實(shí)現(xiàn)類。List:是一個(gè)有序的集合,可以包含重復(fù)的元素ArrayList:可變的數(shù)組,元素允許重復(fù)LinkedList:針對(duì)經(jīng)常插入或者刪除中間元素所設(shè)計(jì)的高效率集合Set:不能包含重復(fù)的元素。SortedSet是一個(gè)按照升序排列元素的Set。TreeSet:以有序狀態(tài)保存并可防止重復(fù)Map:包含了key-value對(duì)。Map不能包含重復(fù)的keySortedMap是一個(gè)按照升序排列key的Map。Map接口和Collection接口沒有任何關(guān)系。ArrayList和LinkedList的比較ArrayList底層采用數(shù)組完成,而LinkedList則是以一般的雙向鏈表(dou
13、ble-linked list)完成,其內(nèi)每個(gè)對(duì)象除了數(shù)據(jù)本身外,還有兩個(gè) 引用,分別指向前一個(gè)元素和后一個(gè)元素。如果我們經(jīng)常在List的開始處增加元素,或者在List中進(jìn)行插入和刪除操作,我們應(yīng)該使用LinkedList,否則的話,使用ArrayList將更加快速。Vector和ArrayList的異同Vector和ArrayList的異同Vector類中所有的方法都是線程同步的,兩個(gè)線程并發(fā)訪問Vector對(duì)象是安全的,需要額外的監(jiān)視器檢查,運(yùn)行效率低些。ArrayList類中所有的方法是非同步的,程序的效率比Vector高。hashtable 與 hashMap接口關(guān)系注:繼承使用的是直
14、線,實(shí)現(xiàn)使用的虛線。SortedSetSetListMapHashSet LinkedHashSetTreeSet ArrayList LinkedList SortedMapHashMap TreeMap ArrayList可變的數(shù)組實(shí)例范型化約束ArrayList中所要放元素的類別ArrayList lists=new ArrayList();排序Collections:工具類取最大和最小的元素:Collections.max()、Collections.min()。Collections類主要是對(duì)列表進(jìn)行操作sort();實(shí)例sort()只接受Comparable對(duì)象的listCompa
15、rable什么是Comparablemarker接口API回憶String中的compareTo方法public int compareTo(User user)return userNpareTo(user.getUserName();對(duì)集合的遍歷forIterator迭代器(Iterator)的用法 Iterator接口定義了對(duì)Collection類型對(duì)象中所含元素的遍歷等增強(qiáng)處理功能可以通過Collection接口中定義的iterator()方法獲得一個(gè)對(duì)應(yīng)的Iterator(實(shí)現(xiàn)類)對(duì)象Set (實(shí)現(xiàn)類)對(duì)象對(duì)應(yīng)的Iterator仍然是無(wú)序的List(實(shí)現(xiàn)類)對(duì)象對(duì)應(yīng)的ListIter
16、ator對(duì)象可以實(shí)現(xiàn)對(duì)所含元素的雙向遍歷: 使用next()方法和previous()方法Iterator接口用法舉例import java.util.*;public class Test public static void main(String args) ArrayList h = new ArrayList();h.add(1st);h.add(2nd);h.add(new Integer(3);h.add(new Double(4.0);Iterator it = h.iterator();while ( it.hasNext() ) System.out.println(it.
17、next();Set不允許重復(fù)HashSet對(duì)象相等Equalspublic boolean equals(Object aSong) Song song = (Song)aSong; return getTitle().equals(song.getTitle();Hashcodepublic int hashCode() reutrn title.hashCode();MapMap使用 成對(duì)的key和valueKey不能重復(fù)實(shí)例Properties類 類似HashMapKey,valueProperties類 import java.util.*;import java.io.*;clas
18、s PropTest public static void main(String args) Properties pps=new Properties(); try pps.load(new FileInputStream(d:perties); Enumeration em=pertyNames(); /枚舉類 while(em.hasMoreElements() String strKey=(String)em.nextElement(); /em.nextElement()返回Object類 String strValue=pps.getProperty(strKey); System.out.println(strKey+=+strValue); catch(Exception e) e.printStackTrace(); Stack棧(Stack)也是一種特殊的線性表,是一種后進(jìn)先出(LIFO)的結(jié)構(gòu)。是限定僅在表尾進(jìn)行插入和刪除運(yùn)算的線性表,表尾稱為棧頂(top),表頭稱為棧底(bottom)。棧的物理存儲(chǔ)可以用順序存儲(chǔ)結(jié)構(gòu),也可以用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。集合的使用集合的使用策略Iterator 優(yōu)先于Enumeration Vector:用ArrayList代替Vector。Hashtable:用HashMap代替Hashtable
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠色品牌與企業(yè)形象競(jìng)爭(zhēng)力考核試卷
- 創(chuàng)業(yè)創(chuàng)新與可持續(xù)發(fā)展戰(zhàn)略研究考核試卷
- 安全生產(chǎn)培訓(xùn)認(rèn)證對(duì)企業(yè)安全文化建設(shè)的影響評(píng)估考核試卷
- 中國(guó)新媒體短視頻成功的白酒企直播案例
- 山東在職申碩考試試題及答案
- 老師護(hù)理考試題及答案
- 互動(dòng)游戲化營(yíng)銷考核試卷
- 消防題目考試試題及答案
- 雅居樂財(cái)務(wù)面試題及答案
- 口譯復(fù)述考試題及答案
- 自來(lái)水廠操作規(guī)程手冊(cè)
- 天翼云從業(yè)者認(rèn)證考試題庫(kù)
- 中國(guó)風(fēng)中醫(yī)藥文化PPT模板
- 2022-2023學(xué)年廣西北海市七年級(jí)(下)期末地理試卷(含解析)
- 醫(yī)院戰(zhàn)略管理如何制定醫(yī)院戰(zhàn)略規(guī)劃講座
- 部編版語(yǔ)文二年級(jí)下冊(cè)第4單元童心童趣大單元整體作業(yè)設(shè)計(jì)
- SYB創(chuàng)業(yè)培訓(xùn)游戲模塊2課件
- 娛樂場(chǎng)所文明服務(wù)責(zé)任書
- 鋼結(jié)構(gòu)防腐油漆施工方案
- 第五講社會(huì)建設(shè)
- GB/T 20303.1-2006起重機(jī)司機(jī)室第1部分:總則
評(píng)論
0/150
提交評(píng)論