Java的面向?qū)ο缶幊?/a>">Java的面向?qū)ο缶幊?/a>
892
2025-04-01
實驗?zāi)康模?/p>
1.熟悉異常處理機制。
2.掌握常見異常的捕獲方法。
實驗內(nèi)容:
1.編程實現(xiàn)除數(shù)為0的異常處理。
2.編程實現(xiàn)輸入錯誤的異常處理。
3.編程實現(xiàn)非法參數(shù)的異常處理。
實驗步驟:
1.編寫一個類ExceptionTest,在main方法中使用try-catch-finally語句結(jié)構(gòu)實現(xiàn):
1)在try語句塊中,編寫兩個數(shù)相除操作,相除的兩個操作數(shù)要求程序運行時用戶輸入;
2)在catch語句塊中,捕獲被0除所產(chǎn)生的異常,并輸出異常信息;
3)在finally語句塊中,隨意輸出一條語句,比如:
System.out.println("執(zhí)行finally語句塊。");
提示:捕捉ArithmeticException異常。
源代碼:
import Java.util.Scanner;
public class ExceptionTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入被除數(shù):\n");
int op1 = input.nextInt();
System.out.println("請輸入除數(shù):\n");
int op2 = input.nextInt();
int result = 0;
try {
result = op1 / op2;
} catch (ArithmeticException e) {
e.printStackTrace();
} finally {
System.out.println("運行完成");
}
System.out.println(result);
}
}
運行結(jié)果截圖:
2. 編寫一個應(yīng)用程序,要求從鍵盤輸入一個double型的圓的半徑,計算并輸出其面積。測試當(dāng)輸入的數(shù)據(jù)不是double型數(shù)據(jù)(如字符串“abc”)會產(chǎn)生什么結(jié)果,怎樣處理。
提示:捕捉InputMismatchException異常。
源代碼:
import Java.util.InputMismatchException;
import java.util.Scanner;
public class Circle {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("請輸入圓的半徑:");
double r = input.nextDouble();
double s = 0;
try {
s = r*r*3.14;
} catch (InputMismatchException e) {
e.printStackTrace();
} finally {
System.out.println("運行完成");
}
System.out.println("圓的面積為:"+s);
}
}
運行結(jié)果截圖:
3.設(shè)計類Person,要求從鍵盤輸入身份證號,為類的屬性id設(shè)置值,當(dāng)輸入的身份證號的長度為18時,賦值給id,當(dāng)值長度不是18時,拋出IllegalArgumentException異常,然后捕獲和處理異常,編寫程序?qū)崿F(xiàn)以上功能。
提示:IllegalArgumentException異常是用戶自定義的異常,不能依靠系統(tǒng)自動拋出,必須通過throws語句實現(xiàn)??蓞⒖家韵麓a:
源代碼:
import java.util.InputMismatchException;
import java.util.Scanner;
class person {
private String id;
public String getId(){
return id;
}
public void setId(String id) throws IllegalArgumentException
{
if(id.length() != 18)
{
throw(new IllegalArgumentException());
}
this.id = id;
}
}
public class Sy8_3{
public static void main(String[] args){
person p1 = new person();
Scanner input = new Scanner(System.in);
System.out.println("請輸入身份證號碼:");
try {
p1.setId(input.next());
System.out.println("你輸入的身份證是:"+p1.getId());
} catch (IllegalArgumentException e) {
System.out.println("輸入有誤");
}
}
}
運行結(jié)果截圖:
實驗小結(jié)
異常指不期而至的各種狀況,如:文件找不到、網(wǎng)絡(luò)連接失敗、非法參數(shù)等。異常是一個事件,它發(fā)生在程序運行期間,干擾了正常的指令流程。Java通過API中Throwable類的眾多子類描述各種不同的異常。因而,Java異常都是對象,是Throwable子類的實例,描述了出現(xiàn)在一段編碼中的錯誤條件。當(dāng)條件生成時,錯誤將引發(fā)異常。
我們可以通過try和cath關(guān)鍵字來捕獲異常,其中catch可以多次使用,進行多重捕獲異常,如下圖所示:
第三步可以使用throws關(guān)鍵字來拋出異常,在方法名稱的尾部加上throws關(guān)鍵字和拋出的異常,如下圖所示:
我們可以通過throws關(guān)鍵字來拋出多個異常,在拋出的異常名稱后面用逗號分隔開,下面代碼就拋出了RemoteException異常和InsufficientFundsException異常,如下圖所示:
異常處理中還有一個finally關(guān)鍵字,無論有沒有異常,finally中的代碼總是被執(zhí)行,需要注意的是finally不是必要的,如下圖所示
Summary:
養(yǎng)成良好的編程習(xí)慣,不要把錯誤給吞噬掉(即捕獲到異常以后又不做出相應(yīng)處理的做法,這種做法相當(dāng)于是把錯誤隱藏起來了,可實際上錯誤依然還是存在的), 也不要輕易地往外拋錯誤,能處理的一定要處理,不能處理的一定要往外拋。往外拋的方法有兩種,一種是在知道異常的類型以后,方法聲明時使用throws把 異常往外拋,另一種是手動往外拋,使用“throw+異常對象”你相當(dāng)于是把這個異常對象拋出去了,然后在方法的聲明寫上要拋的那種異常。
Java
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。