[Java实验 5] 异常处理

实验题目

一、 实验目的

1、了解 Java 中的异常类。

2、学会使用异常模式 try-catch-finally。

3、掌握自定义异常处理。

二、实验环境

1、硬件环境:个人 PC 机

2、软件环境:windows 操作系统+JDK1.8 或以上+Eclipse 或 Idea

三、实验内容

编写一个程序,使用异常处理模式、系统给定的处理方式,自己编写一个异常并做处理。 题目:编写一个银行类 Bank,要求如下“:

(1)变量 balance 为存款余额;

(2)deposite()方法为存款操作;

(3)withdrawa()方法为取款操作;

(4)getbalawal()方法为获取余额操作,如果余额少于取款额时,显示当前余额,并告知不能取款的提醒,否则显示取款成功的信息。要求自义定异常来处理余额不足的 问题。

四、注意事项

1、理解系统异常处理的机制和创建自定义异常的方法。

2、掌握异常的定义、抛出方法及如何捕获并处理异常。


实验操作

1.自定义异常创建

首先要创建一个异常类,来继承Throwable类,其关系图如下

这里根据上面的题目要求,创建如下异常

需要注意的是:

  • Error(错误):通常是灾难性的致命错误,不是程序可以控制的,如内存耗尽、JVM系统错误、堆栈溢出等。应用程序不应该去处理此类错误,且程序员不应该实现任何Error类的子类。
  • Exception(异常):用户可能捕获的异常情况,可以使用针对性的代码进行处理,如:网络连接中断、数组下标越界等。
public class IllegalNumberException extends Throwable{
    public class illegalNumberException extends Exception {
        public illegalNumberException() {
        }

        public illegalNumberException(String message) {
            super(message);
        }
    }
}

2.创建Bank类

import java.util.Scanner;

public class Bank {
    private int balance; //存款余额
    private int withdraw; //需要取出的余额
    private int deposit; //需要存储的余额

    public void setBalance(int balance) {
        if(balance < 0) {
            System.out.println("输入余额不能为负数哦! ");
        } else {
            this.balance = balance;
        }

    }

    public int getBalance() {
        return balance;
    }

    public int getWithdraw() {
        return withdraw;
    }

    public int getDeposit() {
        return deposit;
    }

    public void setWithdraw(int withdraw) {
        this.withdraw = withdraw;
    }

    public void setDeposit(int deposit) {
        this.deposit = deposit;
    }

    public Bank() {
    }

    public Bank(int balance) throws IllegalNumberException {
        if(balance < 0) {
            throw new IllegalNumberException();
        }
        this.balance = balance;
    }

    //    存款操作
    public void deposite() {
        System.out.println("请输入存款金额");
        Scanner scan = new Scanner(System.in);
        deposit = scan.nextInt();
        setDeposit(deposit);
        balance = balance + deposit;
        getbalawal();
    }
//    取款操作
    public void withdrawa() throws IllegalNumberException{
        System.out.println("请输入取款金额");
        Scanner scan = new Scanner(System.in);
        withdraw = scan.nextInt();
        if(withdraw > balance) {
            throw new IllegalNumberException();
        } else {
            setWithdraw(withdraw);
            balance = balance - withdraw;
        }
    }

//    获取余额操作
    public void getbalawal() {
        System.out.println("您当前余额为: "+balance);
    }
}

3.创建运行类

import java.util.Scanner;

public class BankMain {
    public static void main(String[] args) {
        Bank bank = new Bank();
        while(true) {
            System.out.println("--------[银行菜单选择]---------");
            System.out.println("1. 存款");
            System.out.println("2. 取款");
            System.out.println("3. 查询当前余额");
            Scanner scan = new Scanner(System.in);
            int x = scan.nextInt();
            switch (x)
            {
                case 1:
                    bank.deposite();
                    break;
                case 2:
                    try{
                        bank.withdrawa();
                    } catch (IllegalNumberException e) {
                        throw new RuntimeException("您的余额不足,当前余额为:"+bank.getBalance());
                    }
                    break;
                case 3:
                    bank.getbalawal();
                    break;
                default:
                    throw new IllegalStateException("输入了没有功能的按钮: " + x);
            }
        }

    }

}

运行结果如下:

 可以看到,当我们取款大于了余额时,程序就会报错,并且强制终止,也可以用多线程来实现一个更加安全的写法。


4.实验总结

  1. Java异常强制用户去考虑程序的健壮性和安全性,异常处理不用来控制程序的正常流程,其主要作用是捕获程序在运行时发生的异常并进行相应的处理
  2. 异常是程序由于各种原因导致无法正常运行的一个事件,这个事件是由一个异常对象来代表的,这个对象的产生取决于产生异常的类型,可能由应用程序本身产生,也可能由Java虚拟机产生。

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为AI语言模型,我无法完成实验报告的撰写任务。不过我可以提供一些关于Java异常处理的信息,希望能对你有所帮助。 Java异常处理Java编程语言中的重要概念之一,可以帮助开发人员编写更加健壮、可靠的程序。当程序发生异常情况时,Java虚拟机会抛出异常,如果不进行处理,程序将会中断运行。因此,了解异常处理的相关知识是非常必要的。 Java异常分为Checked Exception和Unchecked Exception两种类型。Checked Exception必须在代码中进行处理或者抛出,否则编译器会报错。而Unchecked Exception则不需要显式进行处理,可以在代码中选择处理或者让程序崩溃。 在Java中,异常处理主要通过try-catch-finally语句块来实现。try块中包含可能引发异常的代码,catch块中包含异常处理代码,finally块中包含一定会执行的代码,无论try块中是否发生异常。 以下是一个简单的Java异常处理示例代码: ```java public class ExceptionTest { public static void main(String[] args) { try { int[] array = new int[5]; array[10] = 3; } catch (ArrayIndexOutOfBoundsException e) { System.out.println("数组越界异常"); } finally { System.out.println("finally块一定会执行"); } } } ``` 在上面的代码中,try块中修改了一个长度为5的数组的第10个元素,会引发ArrayIndexOutOfBoundsException异常。在catch块中对这个异常进行了处理,输出了一条错误信息。在finally块中输出了一条一定会执行的信息。 希望这些信息对你有所帮助。如果你还有其他问题或需要更深入的了解,可以随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值