【目的要求】
了解异常处理的概念和机制
熟悉异常类的层次结构
掌握try-catch-finally语句捕获和处理异常
【注意事项】
注意电源插座的用电安全;
遵守计算机的使用注意事项;
防范病毒。
【使用工具】
电脑
window系统
JDK环境
eclipse开发环境
【相关知识】
1.内部类
Java支持在一个类中声明另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类。内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。内部类的类体中不可以声明类变量和类方法。内部类仅供它的外嵌类使用其他类不可以用某个类的内部类声明对象。
2.异常
Java使用 try-catch语句来处理异常,将可能出现的异常操作放在 try-catch语句的try部分,一旦try部分抛出异常对象,比如调用某个抛出异常的方法抛出了异常对象,那么,try部分将立刻结束执行,而转向执行相应的 catch部分。
【主要内容】
手机专卖店为了促销自己的产品,决定发行内部购物券,但其他商场不能发行该购物券。编写一个 Mobile Shop类(模拟手机专卖店),该类中有一个名字为 InnerPurchase Money的内
- class MobileShop{
- InnerPurchaseMoney purchaseMoney1;
- InnerPurchaseMoney purchaseMoney2;
- private int mobileAmount;//手机数量
- MobileShop(){
- purchaseMoney1=new InnerPurchaseMoney(20000);
- purchaseMoney2=new InnerPurchaseMoney(10000);
- }
- void setMobileAmount(int m){
- mobileAmount=m;
- }
- int getMobileAmount(){
- return mobileAmount;
- }
- class InnerPurchaseMoney{
- int moneyValue;
- InnerPurchaseMoney(int m){
- moneyValue=m;
- }
- void buyMobile(){
- if (moneyValue >= 20000) {
- mobileAmount=mobileAmount-6;
- System.out.println("用价值"+moneyValue+"的内部购物券买了6部手机");
- }
- else if(moneyValue<20000&&moneyValue>=10000){
- mobileAmount=mobileAmount-3;
- System.out.println("用价值"+moneyValue+"的内部购物券买了3部手机");
- }
- }
- }
- }
- //测试类
- public class Main {
-
- public static void main(String[] args) {
- MobileShop shop=new MobileShop();
- shop.setMobileAmount(30);
- System.out.println("手机专卖店目前有"+shop.getMobileAmount()+"部手机");
- shop.purchaseMoney1.buyMobile();
- shop.purchaseMoney2.buyMobile();
- System.out.println("手机专卖店目前有"+shop.getMobileAmount()+"部手机");
- }
- }
车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。
- public class DangerException extends Throwable {
- String message;
- public DangerException(){
- message="危险品!";
- }
- public void toShow(){
- System.out.print(message+"");
- }
- }
- public class Machine {
- public void checkBag(Goods goods) throws DangerException{
- if(goods.isDanger){
- DangerException danger=new DangerException();
- throw danger;
- }
- else {
- System.out.print(goods.getName()+"不是危险品!");
- }
- }
- }
- public class Goods {
- public boolean isDanger;
- String name;
- public void setDanger(boolean boo)
- {
- isDanger=boo;
- }
- public void setName(String s){
- name=s;
- }
- public String getName(){
- return name;
- }
- }
- //测试类
- public class Demo {
-
- public static void main(String[] args) {
- Machine machine=new Machine();
- String name[]={"苹果","炸药","西服","硫酸","手表","硫黄"};
- Goods []goods=new Goods[name.length];//检查6件物品
- for(int i=0;i
- goods[i]=new Goods();
- if(i%2==0){
- goods[i].setDanger(false);
- goods[i].setName(name[i]);
- }
- else {
- goods[i].setDanger(true);
- goods[i].setName(name[i]);
- }
- }
- for(int i=0;i< goods.length;i++){
- try{
- machine.checkBag((goods[i]));
- System.out.println(goods[i].getName()+"检查通过");
- }
- catch (DangerException e){
- e.toShow();
- System.out.println(goods[i].getName()+"被禁止!");
- }
- }
- }
- }
