概述
异常捕获机制
- 书类
- 书店类
- 异常类
- 价格异常(运行时异常)
- 库存异常(非运行时异常)
- 主函数
- 总结
一般在程序运行的过程中,我们难免会遇到各种问题,一般分为运行时异常和非运行时异常,举个简单的例子,一个饭店的桌子就只能四个人吃饭,突然一下来了十个人怎么办?这就是异常,我们需要的就是将把这些人做出处理,桌子太小了,需要一个大一点的桌子。当然这是个简单的例子,具体的还是需要在面对各种问题时进行不同的处理。那么下面我们来具体怎么说明异常捕获机制。例子永远是最好理解的,那么我们做一个简单的书店贩卖。JAVA讲的就是面向对象,那么我们就得有书类,以及书店类
书类
public class Book {
//书的属性,书的编号,书名,价格,以及库存
public int id;
public String name;
public double price;
public int count;
public Book(int id, String name, double price,int count) {
super();
this.id = id;
this.name = name;
this.price =price;
this.count = count;
}
}
书店类
public class BookStore {
//书店的作用主要是来存放书籍的,定义一个书的数组来存放多个书籍
Book[] books;
public BookStore() {
super();
this.books = new Book[5];
books[0] = new Book(1, "斗罗大陆", 88.2, 10);
books[1] = new Book(2, "绝世唐门", 39.2, 20);
books[2] = new Book(3, "斗破苍穹", 98.2, 25);
books[3] = new Book(4, "元尊", 78.2, 30);
books[4] = new Book(5, "大主宰", 62.2, 15);
}
//书店也有卖书的方法
//这里是两个异常处理的办法,若是不同可以往下面继续看看,其中的0.8是我们定义的最多打八折
public void sellBook( int id, double price, int buyNumber) {
if (price < (books[id - 1].price * 0.8)) {
throw new PriceOfBookExcetion(price);
}
if (buyNumber > books[id - 1].count) {
throw new CountOutOfBoungsExcetion(buyNumber);
}
System.out.println("您购买了" + books[id - 1].name + ",花了" + price * buyNumber + "元");
}
}
异常类
异常是一种错误形式,其主要目的就是提醒我们,哪里出现的问题,好让我们如何跟好的去解决。
异常一般分为运行时异常(RuntimeException ),非运行时异常(Exception )。
上面的书店我们可以举两个例子介绍。
1,价格太低,低于书店八折的异常,
2,顾客买的书超过库存的异常
价格异常(运行时异常)
public class PriceOfBookExcetion extends RuntimeException {
private double price;
public PriceOfBookExcetion(double price) {
this.price = price;
}
@Override
public String getMessage() {
// TODO Auto-generated method stub
return "价格" + price + "错误";
}
}
这个就是简单的运行时异常错误,throw就是将异常抛出,程序结束。后面的代码将不再执行,有时候系统就会突然崩溃,当然我们有时候也需要捕捉到这些异常的信息,又不想让程序停止,我们一般就需要下面这个异常。(当然上面的这个亦可以,只是不常用,至于要将异常一直抛出待主函数以外就行)
库存异常(非运行时异常)
public class CountOutOfBoungsExcetion extends Exception {
private int count;
public CountOutOfBoungsExcetion(int count) {
this.count = count;
}
@Override
public String getMessage() {
// TODO Auto-generated method stub
return "数目"+count+"错误";
}
}
在非运行时异常时,继承的是Exception,我们书店的代码就是报异常,我们需要将异常信息抛出到我们的主函数内(throws …)
代码改为
public void sellBook( int id, double price, int buyNumber) throws countOfBookExcetion {
if (price < (books[id - 1].price * 0.8)) {
throw new PriceOfBookExcetion(price);
}
if (buyNumber > books[id - 1].count) {
throw new CountOutOfBoungsExcetion(buyNumber);
}
System.out.println(“您购买了” + books[id - 1].name + “,花了” + price * buyNumber + “元”);
},
主函数
public class Test {
public static void main(String[] args) {
BookStore bs = new BookStore();
try {
new BookStore().sellBook( 3, 90, 20);
} catch (PriceOfBookExcetion e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
其中我们要将的就是try和catch,还有finally。捕获异常。
/*
* try : 存放可能发生错误的代码
* 当代码发生异常后立马到 catch 处理,发生异常后的代码不会继续运行
* catch : 发生错误后的处理代码
* 可以添加多个catch处理不同的异常
* -处理 某一个异常
* -处理 多个异常,多个异常之间用 | 连接
* -处理一个父类下的所有异常
* finally : 这个里面的代码不管是否发生异常都会别执行
* 一般用于回收系统资源
* */
总结
异常处理主要是分为两个,运行时异常和非运行时异常。另外配上出现异常后的运行截图。
最后
以上就是笑点低跳跳糖为你收集整理的异常捕获机制书类书店类异常类主函数总结的全部内容,希望文章能够帮你解决异常捕获机制书类书店类异常类主函数总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复