JavaSE各阶段练习题----异常
異常作業(yè):
| 異常是程序執(zhí)行期間中斷指令的正常流程的事件。 |
異常繼承體系:
?
| |
?
| throw:用于拋出異常類的實例 throws:用于聲明拋出異常,表示該類不處理,讓方法調(diào)用者處理 |
?
| 當你用多catch語句時,記住異常子類必須在它們?nèi)魏胃割愔笆褂檬呛苤匾摹_@是因為運用父類的catch語句將捕獲該類型及其所有子類類型的異常。這樣,如果子類在父類后面,子類將永遠不會到達。 |
?
| 在異常處理時提供finally塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的catch字句就會執(zhí)行,然后控制就會進入到finally塊。 也就是說不管程序是否發(fā)生異常,還是在try塊和catch塊中使用return語句,finally塊都會執(zhí)行。 |
?
| ? |
?
8.自定義異常的步驟?
| 1.創(chuàng)建自定義異常類并繼承Exception基類,如果自定義Runtime異常,則繼承RuntimeException基類。 2.在方法中通過throw關(guān)鍵字拋出異常對象 3.如果在當前拋出異常的方法中處理異常,可以使用try-catch語句捕獲并處理,否則在方法的聲明處通過throws關(guān)鍵字知名要拋出的給方法調(diào)用者的異常,繼續(xù)進行下一步操作。 4.在出現(xiàn)異常方法的調(diào)用者中捕獲并處理異常 |
?
?
8 首先預(yù)測下列程序的運行結(jié)果,然后編譯、執(zhí)行以驗證你的預(yù)測:
?? import java.io.*;
? public class C11{
???????public static void main(String args[]) {
??????????????for(int i = 0; i < 4;i++) {
?????????????????????int k;
?????????????????????try {
???????????????????????????switch( i ) {
???????????????????????????????????case 0: ??????
??????????????????????????????????????????int zero = 0;
??????????????????????????????????????????k = 911 / zero;
??????????????????????????????????????????break;
???????????????????????????????????case 1: ??????
??????????????????????????????????????????int b[ ] = null;
??????????????????????????????????????????k = b[0];
??????????????????????????????????????????break;
???????????????????????????????????case 2: ?????
??????????????????????????????????????????int c[ ] = new int[2];
??????????????????????????????????????????k = c[9];
??????????????????????????????????????????break;
???????????????????????????????????case 3: ??????
??????????????????????????????????????????char ch = "abc".charAt(99);
??????????????????????????????????????????break;
??????????????????????????????}
?????????????????????}catch(Exception e) {
????????????????????????????System.out.println("\nTestcase #" + i + "\n");
????????????????????????????System.out.println(e);
?????????????????}finally?{
System.out.println("Exception Test Finished!");
?}
??????????????}
???????????}
}
(2)將上述程序中catch(Exception e)更改為catch(ArithmeticException e),預(yù)測程序運行的結(jié)果并驗證之。?Testcase #0
(3)將上述程序中catch(Exception e)更改為catch(NullPointerException e),預(yù)測程序運行的結(jié)果并驗證之。Testcase #0????Testcase #1
(4)在(3)的程序中添加一些語句,使得程序能夠輸出Exception Test Finished!的信息。(提示:使用finally語句)
finally?{
System.out.println("Exception Test Finished!");
}
?
9 猜數(shù)游戲,隨機生成一個1 到100之間的整數(shù),從鍵盤輸入數(shù)字進行猜數(shù),一共可以猜5次,如果猜小了在控制臺輸出猜小了,如果猜大了,在控制臺輸出猜大了,如果猜
對了在控制臺輸入 恭喜你猜對了,并結(jié)束游戲。 注意當輸入的不是數(shù)字或數(shù)字不合服規(guī)則時,不算次數(shù)
| package?com.henu; ? import?java.util.Scanner; ? public?class?Demo01 { ? public?static?void?main(String[] args) { ? Scanner sc?= new?Scanner(System.in); boolean?flag?= true; int?count?= 0; int?y?= (int)(1+Math.random()*100); System.out.println(y+"->"); while?(flag) { System.out.println("請輸入你猜到的數(shù)字:"); String x?= sc.nextLine(); if?(!x.matches("^([1-9][0-9]{0,1}|100)$")) { System.out.println("輸入的不是數(shù)字或數(shù)字不合服規(guī)則,請重新輸入!"); System.out.println("此次不計次數(shù),請正確輸入!"); }else?{ int?z?= Integer.parseInt(x); if?(z?> y) { System.out.println("猜大了"); count++; System.out.println("你還有"+(5-count)+"次機會"); flag?= true; }else?if?(z?< y) { System.out.println("猜小了"); count++; System.out.println("你還有"+(5-count)+"次機會"); flag?= true; }else?{ System.out.println("猜對了,結(jié)束游戲!"); flag?= false; } if?(count?== 5) { System.out.println("機會用完了,游戲結(jié)束!"); } } ? ? } ? ? } ? } ? |
?
正則作業(yè):
?
課上代碼
?
| /* ?* 如(010-38389438) ?*/ public?class?Demo04_驗證電話號碼 { ? public?static?void?main(String[] args) { String phoneNumber?= "010-38389438"; boolean?b?= phoneNumber.matches("\\d{3,4}-\\d{7,8}"); System.out.println(b); } ? } ? |
| /* ?* 只能是字母開頭的數(shù)字、字母或下劃線的組合 ?*/ public?class?Demo06_驗證用戶名 { ? public?static?void?main(String[] args) { ? String name?= "abc1314"; boolean?b?= name.matches("[a-zA-Z]+[\\w|_]*"); System.out.println(b); ? } ? } |
| /* ?* (192.168.1.1) ?*/ public?class?Demo07_驗證IP地址 { ? public?static?void?main(String[] args) { ? String IP?= "192.168.1.1"; boolean?b?= IP.matches("^((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}$"); System.out.println(b); ? } ? } ? |
| /* ?* http://www.baidu.com ?*/ public?class?Demo08_驗證網(wǎng)址 { ? public?static?void?main(String[] args) { ? String url?= "http://www.baidu.com"; boolean?b?= url.matches("^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"); System.out.println(b); } ? } |
| /* ?* (100以內(nèi)) ?*/ public?class?Demo09_驗證年齡 { public?static?void?main(String[] args) { String str?= "98"; boolean?b?= str.matches("^(?:[1-9]?\\d|100)$"); System.out.println(b); } } ? |
?
總結(jié)
以上是生活随笔為你收集整理的JavaSE各阶段练习题----异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅析函数式接口
- 下一篇: JavaSE各阶段练习题----集合-C