Java語言程序設計 上機實驗5java
實驗目的:編程
理解異常的概念,掌握Java的異常處理機制、常見異常的捕獲方法、自定義異常及其拋出和捕獲方法。數組
實驗內容:測試
編寫一個程序,分別生成ArrayIndexOutOfBoundsException類型和NumberFormatException類型的異常;而後改寫程序,對這兩種類型的異常進行捕獲併合理地處理。this
另外,思考並回答問題:可否0同時拋出ArrayIndexOutOfBoundsException類型和NumberFormatException類型的異常?爲何?spa
(1) 自定義兩個異常類:非法姓名異常IllegaNameException和非法地址異常IllegalAddressException。設計
(2) 定義Student類包含Name和Address屬性,和setName、setAddress方法,當姓名長度小於1或者大於5時拋出IllegaNameException,當地址中不含有「省」或者「市」關鍵字時拋出IllegalAddressException。code
(3) 編寫程序拋出這兩種異常,在main方法中進行捕獲併合理地處理。orm
實驗要求:blog
1. 在實驗報告中給出程序運行結果截圖。
2. 源程序代碼附到實驗報告的最後。
3. 認真填寫實驗報告並妥善存檔,在下次上機實驗課以前發送電子版實驗報告至 wsycup@foxmail.com。
注意,「郵件標題」與「附件實驗報告文件名」均爲:
Java1實驗報告N_學號_姓名
其中N爲阿拉伯數字,指第幾回實驗,例如:
Java1實驗報告3_ 2012010400_李雷
請嚴格按照規定的格式發送郵件(注意標題中「Java」後的數字「1」),郵件標題不符合格式要求等同於未交做業,並在規定的時間發送實驗報告郵件,過時無效。
4. 實驗報告雷同者將不能獲得相應的平時分。
附錄:實驗報告
實驗題目__實驗5________
學號__2014011329__ 姓名___許愷____ 班級___計算機14-1___ 時間____________
實驗題目解答
一.
二.
附:源程序
一.
package com.Test5; public class Test5 { public static void main(String[] args) { // TODO Auto-generated method stub int a[]=new int[8]; int b; try{ for(int i=0;i<10;i++){ System.out.println(a[i]); } } catch(ArrayIndexOutOfBoundsException e){ System.out.println("數組越界"); } try{ b=Integer.parseInt("23gf"); } catch(NumberFormatException e){ System.out.println("類型格式轉換錯誤"); } } } 二.Test55.java package com.Test55; public class Test55 { /** * @param args * @throws IllegalAddressException * @throws IllegaNameException */ public static void main(String[] args) throws IllegalAddressException, IllegaNameException { // TODO Auto-generated method stub Student s=new Student() ; s.setName("測試姓名字符串"); s.setAddress("測試地址字符串"); } } Student.java package com.Test55; public class Student { String Name; String Address; public void setName(String Name)throws IllegaNameException{ if(Name.length()<1||Name.length()>5) throw new IllegaNameException(Name+",長度出錯,應在1-5之間。"); this.Name=Name; } public void setAddress(String Address)throws IllegalAddressException{ boolean j=false; for(int i=0;i<Address.length();i++){ if(Address.charAt(i)=='省'||Address.charAt(i)=='市'){ j=true; break; } } if(j==false){ throw new IllegalAddressException(Address+"中沒有‘省’或‘市’出現,請修正"); } this.Address=Address; } } IllegaNameException.java package com.Test55; public class IllegaNameException extends Exception { public IllegaNameException(){ super(); } public IllegaNameException(String s){ super(s); } } IllegalAddressException.java package com.Test55; public class IllegalAddressException extends Exception { public IllegalAddressException(){ super(); } public IllegalAddressException(String s){ super(s); } }
心得和體會:
對於異常的處理通過編程以後才明白他的含義和用法,遵循java中的規則,只是提供一個創建異常的平臺,定義也是在外面,以前理解錯誤了,覺得新建異常都是在一個類中,對我頗有幫助。