標籤:錯誤類型 多重 number 直接 for alt 物件導向設計 with 處理
1. 本周學習總結
1.1 以你喜歡的方式(思維導圖或其他)歸納總結異常相關內容
2. 書面作業
本次PTA作業題集異常
1. 常用異常
結合題集題目7-1回答
1.1 自己以前編寫的代碼中經常出現什麼異常、需要捕獲嗎(為什麼)?應如何避免?
答:
輸入異常(NumberFormatException ClassCastException ) unchecked exception ;
數組越界(ArrayIndexOutOfBoundsException) unchecked exception ;
避免方法就是正確輸入吧。
1.2 什麼樣的異常要求使用者一定要使用捕獲處理?
答:
RuntimeException及其子類:無需try-catch ;
Exception與直接繼承Exception的子類:必須try-catch處理 ;
2. 處理異常使你的程式更加健壯
題集題目7-2
2.1 實驗總結。並回答:怎麼樣才能讓你的程式更加健壯?
答:
這道題需要注意在出現異常並捕獲後,數組下標要減一;
讓程式更加健壯,首先在出現異常時能夠自行處理以至於程式能繼續正常運行下去;其次還要告知鍵入者出現了什麼異常,提醒其避免下次出現錯誤。
3. throw與throws
題集題目7-3
閱讀Integer.parsetInt原始碼
3.1 Integer.parsetInt一開始就有大量的拋出異常的代碼,這種做法有什麼好處?
答:
拋出大量異常以解決可能出現的種種錯誤,是代碼程式更加健壯。
3.2 結合自己編寫的程式與3.1,分析自己編寫的方法拋出異常時一般需要傳遞給調用者一些什麼資訊?
答:
- 出錯類型(IllegalArgumentException)
- 出錯具體原因 (begin與end的大小判斷)
- 提醒使用者怎麼解決,避免再次犯錯
4. 用異常改進ArrayIntegerStack
題集題目6-3
4.1 結合6-3代碼,回答使用拋出異常的方式代表程式運行時出錯有什麼好處?比單純的返回錯誤值,有何優點?
答:
使用拋出異常的方式可以在使用者知道出錯的同時,對出錯原因、錯誤類型也一清二楚,這是單純的返回錯誤值所不能做到的(以前只是簡單的返回一個“ -1 ”來表示出錯,很不明了)。
4.2 如果一個方法內部的內碼拋出的是RuntimeException類型的異常,那麼方法聲明是否應該使用throws關鍵字,如果使用throws關鍵字聲明該方法拋出的異常,能給我們帶來什麼好處嗎?
答:
RuntimeException類型的異常屬於unchecked Exception,可以不使用throws關鍵字來聲明;
RuntimeException類型的異常是虛擬機器在運行時產生的異常,其產生比較頻繁,如果都要處理對程式可讀性和運行效率影響太大。如果遍曆一個數組,為了處理越界情況,加上try catch塊,效率大大降低。
5. 函數題-多種異常的捕獲
題集題目6-1
5.1 結合6-1代碼,回答:一個try塊中如果可能拋出多種異常,且異常之間可能有繼承關係,捕獲時需要注意些什嗎?
答:
需要注意:子類異常必須放在父類異常前面。
5.2 一個try塊中如果可能拋出多種異常,使用Java8的多重異常捕獲文法需要注意些什嗎?
答:
需要注意:catch塊中的異常不得有繼承關係
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。如果關閉檔案失敗,提示關閉檔案失敗!
答:
注意:close 也可能會產生null 指標異常,所以:
6.2 結合題集6-2代碼,要將什麼樣操作放在finally塊?為什嗎?使用finally關閉資源需要注意一些什嗎?
答:
6-2中將close()(釋放資源)放在了finally塊中,finally中的語句塊任何情況下都會被執行,所以它裡邊一般是釋放資源;
使用finally關閉資源需要注意:close 也可能會產生null 指標異常,因此也要對其進行try-catch處理。
6.3 使用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 統計本周完成的代碼量
需要將每周的代碼統計情況融合到一張表中。
201621123057 《Java程式設計》第10周學習總結