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;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值