201621123016 《Java程序設計》第十周學習總結
1. 本周學習總結
1.1 以你喜歡的方式(思維導圖或其他)歸納總結異常相關內容。
2. 書面作業
本次PTA作業題集異常
1. 常用異常
結合題集題目7-1回答
1.1 自己以前編寫的代碼中經常出現什麽異常、需要捕獲嗎(為什麽)?應如何避免?
- 空指針:NullPointerException
- 類型輸入異常:NumberFormatException
- 數組越界:ArrayIndexOutOfBoundsException
- 強轉類型異常:ClassCastException
這些不是checked Exception異常,而是unchecked Exception異常這些最好不要捕獲,在編寫代碼時就要避免這些異常的發生。
1.2 什麽樣的異常要求用戶一定要使用捕獲處理?
checked Exception異常要求用戶一定要捕獲。例如:文件打開失敗產生的異常。
2. 處理異常使你的程序更加健壯
題集題目7-2
2.1 實驗總結。並回答:怎麽樣才能讓你的程序更加健壯?
在本題中要註意輸入的字符串是否含有非數字成分,是則捕捉其拋出的異常。要使程序更加健壯就要對可能產生的異常進行處理。
3. throw與throws
題集題目7-3
閱讀Integer.parsetInt源代碼
3.1 Integer.parsetInt一開始就有大量的拋出異常的代碼,這種做法有什麽好處?
一開始就拋出多個異常,讓使用者快速知道自己使用方法產生錯誤並知道產生錯誤的原因。
3.2 結合自己編寫的程序與3.1,分析自己編寫的方法拋出異常時一般需要傳遞給調用者一些什麽信息?
begin必須小於end,begin要大於等於0,end不得大於arr.length。這些是這道題需要拋出的異常,在其它地方也要像這樣對輸入的形參進行判斷,對不符合要求的形參要拋出相應的異常。
4. 用異常改進ArrayIntegerStack
題集題目6-3
4.1 結合6-3代碼,回答使用拋出異常的方式代表程序運行時出錯有什麽好處?比單純的返回錯誤值,有何優點?
使用拋出異常的方式代表程序運行時出錯可以讓我們不需要像平時一樣,在其它地方調用該方法時不需要對其返回值進行判斷,只需使用try-catch語句對異常進行處理。而且對比單純的返回錯誤值,拋出異常可以得到更具體的錯誤原因。
4.2 如果一個方法內部的內碼拋出的是RuntimeException類型的異常,那麽方法聲明是否應該使用throws關鍵字,如果使用throws關鍵字聲明該方法拋出的異常,能給我們帶來什麽好處嗎?
可以不使用throws,因為RuntimeException不是checked Exception。可以讓我們在調用該方法的地方使用try-catch捕獲其拋出的異常,並根據要求編寫相應代碼。
5. 函數題-多種異常的捕獲
題集題目6-1
5.1 結合6-1代碼,回答:一個try塊中如果可能拋出多種異常,且異常之間可能有繼承關系,捕獲時需要註意些什麽?
使用多個catch語句時要註意子類異常要放在父類異常前面。
5.2 一個try塊中如果可能拋出多種異常,使用Java8的多重異常捕獲語法需要註意些什麽?
使用Java8的多重異常捕獲語法時要註意子類異常要放在父類異常前面。
6. 為如下代碼加上異常處理
byte[] content = null;
FileInputStream fis = new FileInputStream("testfis.txt");
int bytesAvailabe = fis.available();//獲得該文件可用的字節數
if(bytesAvailabe>0){
content = new byte[bytesAvailabe];//創建可容納文件大小的數組
fis.read(content);//將文件內容讀入數組
}
System.out.println(Arrays.toString(content));//打印數組內容
6.1 改正代碼,並增加如下功能。當找不到文件時,需提示用戶找不到文件xxx,請重新輸入文件名,然後嘗試重新打開。 如果是其他異常則提示打開或讀取文件失敗!。
註1:裏面有多個方法均可能拋出異常。
功能2:需要添加finally關閉文件。無論上面的代碼是否產生異常,總要提示關閉文件ing。如果關閉文件失敗,提示關閉文件失敗!
6.2 結合題集6-2代碼,要將什麽樣操作放在finally塊?為什麽?使用finally關閉資源需要註意一些什麽?
要把文件關閉放在finally塊,在使用時要在finally塊中判斷打開的文件變量不為空。
6.3 使用Java7中的try-with-resources來改寫上述代碼實現自動關閉資源。簡述這種方法有何好處?
使用Java7中的try-with-resources可以自動關閉文件,而不需要寫finally塊,可以減少代碼量,並保證文件一定會關閉。
7. 面向對象設計作業-圖書館管理系統(分組完成,每組不超過3個同學)
登錄lib.jmu.edu.cn,對圖書進行搜索。然後登錄圖書館信息系統,查看我的圖書館。如果讓你實現一個圖書借閱系統,嘗試使用面向對象建模。
7.1 該系統的使用者有誰?
借閱用戶和管理員。
7.2 主要功能模塊(不要太多)及每個模塊的負責人。下周每個人要提交自己負責的模塊代碼及運行視頻。
??登陸,註冊,查看信息,搜索書籍,借書,還書
負責人 | 模塊 |
---|---|
鄭玉波 | 搜索書籍,借書,還書 |
占恒 | 註冊,登陸,查看信息 |
7.3 該系統的主要的類設計及類圖(可用)
7.4 你準備如何存儲圖書信息、解決信息、讀者信息等。
??用一個文件來存儲圖書信息,並可以進行修改來解決信息,用另一個文件存儲讀者信息。
3.碼雲及PTA
題目集:異常
3.1. 碼雲代碼提交記錄
在碼雲的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然後搜索並截圖
3.2 截圖PTA題集完成情況圖
需要有兩張圖(1. 排名圖。2.PTA提交列表圖)
3.3 統計本周完成的代碼量
需要將每周的代碼統計情況融合到一張表中。
周次 | 總代碼量 | 新增代碼量 | 總文件數 | 新增文件數 |
---|---|---|---|---|
2 | 625 | 625 | 99 | 99 |
3 | 1429 | 804 | 113 | 14 |
4 | 3354 | 1925 | 223 | 110 |
5 | 3751 | 397 | 241 | 18 |
6 | 4369 | 618 | 80 | -161 |
7 | 4998 | 629 | 78 | -2 |
8 | 5590 | 592 | 87 | 9 |
9 | 5751 | 161 | 89 | 2 |
11 | 6101 | 350 | 97 | 8 |
201621123016 《Java程序設計》第十周學習總結