十年编程两茫茫,工期短,需求长。千行代码,Bug何处藏。纵使上线又如何,新版本,继续忙。黑白颠倒没商量,睡地铺,吃食堂。夜半梦醒,无人在身旁。最怕灯火阑珊时,手机响,心里慌。

实验九:异常的抛出、捕获并处理

(1)测试Point类中参数异常

 

 

point1中参数是负数,故参数报错

 

(2)测试Rectangle类中参数异常

 

 

 矩形的高为负数,故参数报错

 

(3)测试Triangle类中参数异常

 

 

由于三个点斜率都一样,故在一条直线上,参数报错

 

(4)测试Polygon类中参数异常

 

 

由于只传入了两个点的参数,无法构成多边形,故参数报错

 

 

源代码如下:

 1 package error;
 2 
 3 public class Throwerror {
 4 public static void main(String[] args) throws IllegalArgumentException
 5 {    Point point1=new Point (3,1);
 6      Point point2=new Point (6,2);
 7      Point point3=new Point (9,3);
 8      new Rectangle(point1, -12,3);
 9      new Triangle(point1,point2,point3);
10      Point[] point= {point1,point2};
11      new Polygon(point);
12     }
13 
14 }
15 
16 class Point
17 {   public Point() {};
18     public int x;
19     public int y;
20     public Point(int x,int y)
21    {   this.x=x;
22        this.y=y;
23         
24         if(x<0||y<0)
25             throw new IllegalArgumentException("Point中无效参数异常");
26        }
27     }
28 class Rectangle extends Point
29 {
30     public int length,width;
31     public Rectangle(Point point1,int length,int width) {
32         this.length=length;
33         this.width=width;
34         if(length<0||width<0)
35             throw new IllegalArgumentException("Rectangle无效参数异常");
36     }
37     }
38 class Triangle extends Point 
39 {
40     
41     public Triangle(Point point1,Point point2,Point point3) {
42         if(point1.x/point1.y==point2.x/point2.y&&point2.x/point2.y==point3.x/point3.y)
43             throw new IllegalArgumentException("Triangle无效参数异常");
44         }
45     }
46 
47 class Polygon extends Point
48 {   int i=0;
49     public Polygon(Point[] points)
50     { i=points.length;
51       if(i<=2)
52         throw new IllegalArgumentException("Polygon无效参数异常");
53         }
54 
55     }
56     

 

 

心得总结:

(1)建立新的异常要通过 throw new IllegalArgumentException(" xxx");实现,xxx表示异常信息

(2)抛出异常可以直接在主函数中抛出,也可以在类中直接抛出 ,例如:public static void main(String[] args) throws IllegalArgumentException   或者   public Point(int x,int y) throws IllegalArgumentException

(3)在检测异常时,要注意将之前的异常注释掉,因为当程序出现异常时,就直接中断程序,就无法测试后面的异常现象

(4)在传入多个点时,要将多个点存放在一个数组中,以便于传入参数

posted @ 2019-05-21 20:31  风眷残云  阅读(634)  评论(0编辑  收藏  举报