异常处理练习:处理求圆和长方形面积中的异常

2017-10-28  本文已影响0人  YOUNG_FAN

需求:

2017.10.28.jpg

代码:

/*
练习:处理求圆和长方形面积中的异常
*/
class NoValueException extends RuntimeException {   

   NoValueException(String msg) {
       super(msg);
   }
}

interface Shape {   

   void getArea();
}

class Rec implements Shape {
   
   private int len,wid;
   
   Rec(int len,int wid)  { //throws NoValueException 自定义异常继承的是RuntimeException
                           //下面也不用进行异常处理了(不用try catch了
       if (len<=0 || wid<=0)
           throw new NoValueException("出现非法值");
       
       this.len = len;
       this.wid = wid;
   }
   
   public void getArea() {
       System.out.println(len*wid);
   }
}

class Circle implements Shape {
   
   private int radius;
   public static final double PI = 3.14; //全局常量
   
   Circle(int radius) {
       if (radius<=0)
           throw new NoValueException("非法");
       this.radius = radius;
   }
   
   public void getArea() {
       System.out.println(radius*radius*PI);
   }
}

class ExceptionText1 {

   public static void main(String[] args) {
       Rec r = new Rec(3,4);
       r.getArea();
       
       Circle c = new Circle(38);
       c.getArea();
       System.out.println("over");
   }
}

总结:

在实际中,异常处理要单独封装成一个类,这个类的名字便于查看具体是什么异常。对于非法值的异常,可以自定义一个类直接继承RuntimeException异常类,此时不用再抛出异常和处理异常了,出现问题后虚拟机直接停止工作,便于直接改掉非法值,才继续工作。

上一篇下一篇

猜你喜欢

热点阅读