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
- 異常篇——異常處理
- 異常處理
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- Java 異常處理Java
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理
- oracle異常處理Oracle
- PowerShell 異常處理
- plsql異常處理SQL
- Swift 異常處理Swift
- JS異常處理JS
- app異常處理APP
- Oracle 處理異常Oracle
- MySQL異常處理MySql
- 異常處理 (轉)
- 異常處理機制(二)之異常處理與捕獲
- JSP 異常處理如何處理?JS
- Java 異常表與異常處理原理Java
- restframework 異常處理及自定義異常RESTFramework
- windows核心程式設計---未處理異常,向量化異常處理與C++異常Windows程式設計C++
- Python異常處理Python
- PHP 核心 - 異常處理PHP
- Python——異常處理Python
- SpringMVC異常處理SpringMVC
- 異常處理過程
- C++ 異常處理C++
- PL SQL異常處理.SQL
- Java--異常處理Java
- SAP HANA異常處理
- 17-異常處理
- 異常處理機制