实验内容:本实验以情人节送花为业务背景,女方提出送花需求,男方送出鲜花,
体验自定义异常以及异常处理机制。当女方提出送花数超过男方可承受范围(例如:
100 朵)时,需要抛出异常。
创建工程并配置环境:
- 工程名:SE_JAVA_EXP_E02。
- 创建包,取名:cn.com.java.experiment 和 cn.com.java.experiment.exception。
- 在包 cn.com.java.experiment.exception 下创建异常类 RoseException(给出异常信息)
- 在 cn.com.java.experiment 包中创建送花业务类 Rose
定义一个模拟男方向女方送花的方法 giveRose。
送花业务逻辑描述如下
1.当送花需求(参数)小于 1 时,方法输出以下信息提示错误: “送花
的数量不正确:数量不能小于 1!”
2.当送花需求(参数)大于男方的鲜花持有数(total)时,方法抛出异常 RoseException,错误信息:“没钱买” + num + “支玫瑰花”
3.当有送花需求时,男方鲜花已经送完(total = 0),方法抛出异常为:RoseException,错误信息:“没钱买” + num + “支玫瑰花”
4.当送花需求(参数)小于等于男方的鲜花持有数(total)时,输出如下信息: “亲爱的,送你” + 送花数量 + “朵玫瑰花!”
5.同时更新男方的鲜花持有数(total):total = total - num。 - 在包 cn.com.java.experiment 下创建主类:MainClass。
提示用户输入送花数量,提示信息:你想送女朋友多少朵玫瑰(数字):
接收用户输入的送花数;
执行送花操作并捕获送花时可能出现的异常;
确保送花操作无论是否成功都显示:无论如何,我都是爱你的。
代码
Mainclass
package cn.com.java.experiment;
import java.util.Scanner;
import cn.com.java.experiment.exception.RoseException;
public class MainClass {
public static void main (String gras[])
{
System.out.println("偷偷告诉我,你能接受的玫瑰数?:");
Scanner in = new Scanner(System.in);
int total = in.nextInt();
Rose rose = new Rose(total);
System.out.println("你想送女朋友多少朵玫瑰?:");
try {
int number = in.nextInt();
rose.giveRose(number);
}
catch (RoseException e) {
System.out.println(e.getMessage());
}
finally {
in.close();
System.out.println("无论如何,我都是爱你的!");
}
}
}
Rose
package cn.com.java.experiment;
import cn.com.java.experiment.exception.RoseException;
public class Rose {
private int total;
public Rose() {
this.total=0;
}
public Rose(int total) {
this.total=total;
}
public void giveRose(int number) throws RoseException {
if(number < 1) {
throw new RoseException("送花的数量不正确:数量不能小于1!");
}
else if (number>total)
{
throw new RoseException("没钱买" + number + "支玫瑰花。");
}
else if (total==0)
{
throw new RoseException("没钱买" + number + "支玫瑰花。");
}
else
{
System.out.println( "亲爱的,送你" + number + "朵玫瑰花!");
this.total -= number;
}
}
}
Roseexception
package cn.com.java.experiment.exception;
public class RoseException extends Exception {
public RoseException() {} //构造函数
public RoseException(String s) {
super(s);
} //调用父类构造函数
}
截图