JAVA_異常處理
實驗目的
1.瞭解異常的基本概念,及其異常類的層次關係
2.理解異常處理機制
3.掌握使用try-catch-finally處理異常的方法
4.掌握使用throws、throw宣告丟擲異常的方法
5.掌握自定義異常的定義與使用
實驗內容
1.(ArrayIndexOutOfBoundsException異常)編寫一個程式,建立一個長度為10的一維陣列。提示使用者輸入陣列下標,然後顯示對應的元素值。如果輸入的下標越界,就顯示訊息“您輸入的陣列下標越界”。
2.(InputMismatchException異常)編寫一個程式,提示使用者輸入兩個整數,然後顯示它們的和,如圖8-3所示。如果使用者輸入的資料型別不正確時,提示使用者“您輸入的資料型別不正確,無法進行求和計算!”。
3.編寫程式完成下列需求:
(1)設計一個自定義異常類NegativeException,這個類包括:
a)一個私有成員變數content(異常資訊,String型,只讀)及其getter和setter方法。
b)一個有參構造方法,能建立指定異常資訊的自定義異常物件。
(2)設計一個賬戶類Account,這個類包括:
c)2個私有成員變數:id(賬戶ID,String型,只讀),balance(賬戶餘額,double型,只讀)。
d)一個有參構造方法,能建立一個指定id,賬戶餘額為0的賬戶。
e)這兩個私有成員變數的getter和setter方法。
f)一個名為deposit的方法向賬戶存入特定金額money。若存款金額小於0,則丟擲自定義異常(NegativeException),提示“存款金額不能小於0!”;否則將存款金額累加到賬號餘額中,並提示“成功存款元。”。
g)一個名為withDraw的方法從賬戶提取特定金額money。若取款金額小於0,則丟擲自定義異常(NegativeException),提示“取款金額不能小於0!”;若賬戶餘額不足,則丟擲異常(Exception),提示“餘額不足,取款失敗!”;否則,從賬戶餘額中扣除取款金額,並提示“成功取款元。”。
(3)在測試程式AccountTest中使用如下程式碼驗證異常處理的結果。
程式碼:
package lab08_443;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test08_test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[]= {0,1,2,3,4,5,6,7,8,9};
try {
System.out.println(a[15]);
}catch(ArrayIndexOutOfBoundsException ex){
System.out.println("您輸入的陣列下標越界");
}
System.out.println("程式碼繼續執行了");
Scanner b=new Scanner(System.in);
try {
int x=b.nextInt();
int y=b.nextInt();
System.out.println(x+y);
}catch(InputMismatchException ex) {
System.out.println("您輸入的資料型別不正確,無法進行求和計算!");
}
}
}
package lab08_443;
public class Account {
private final String id;
private double balance;
public Account(String id){
this.id=id;
this.balance=0;
}
public void deposit(double money) {
try {
if(money<0) {
throw new NegativeException("存款金額不能小於0!");
}else {
this.balance+=money;
System.out.println("成功存款"+money+"元。");
}
}catch(NegativeException ex){
System.out.println(ex.getContent());
}
}
public void withDraw(double money) {
try {
if(money<0) {
throw new NegativeException("取款金額不能小於0!");
}else if(getBalance()<money) {
throw new Exception("餘額不足,取款失敗!");
}else {
this.balance-=money;
}
}catch(NegativeException ex) {
System.out.println(ex.getContent());
//
}catch(Exception ex) {
System.out.println(ex.getMessage());
// System.out.println("餘額不足,取款失敗!");
}
}
public String getId() {
return id;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance=balance;
}
}
package lab08_443;
public class AccountTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Account a=new Account("1001");
a.deposit(-3000);
a.deposit(3000);
System.out.println("賬戶ID"+a.getId()+",餘額:"+a.getBalance());
System.out.println("-----------------------");
a.withDraw(1000);
// a.withDraw(-500);
System.out.println("賬戶ID"+a.getId()+",餘額:"+a.getBalance());
a.withDraw(5000);
System.out.println("賬戶ID"+a.getId()+",餘額:"+a.getBalance());
}
}
package lab08_443;
public class NegativeException extends Exception {
private final String content;
public NegativeException(String content) {
this.content=content;
}
public String getContent() {
return this.content;
}
}
相關文章
- 異常篇——異常處理
- Java_異常介紹Java
- 異常處理
- JSP 異常處理如何處理?JS
- 異常-throws的方式處理異常
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- 異常的處理
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java
- 08、異常處理
- SpringMVC異常處理SpringMVC
- 異常處理機制(二)之異常處理與捕獲
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- NodeJS之異常處理NodeJS
- React Native 異常處理React Native
- Spring Boot 異常處理Spring Boot
- PHP 核心 - 異常處理PHP
- GRpc異常處理FilterRPCFilter
- python異常捕捉處理Python
- 14. 異常處理
- 異常處理機制
- 異常處理方式throws
- 處理多個異常
- 異常處理全面解析
- Python Selenium異常處理Python