黑马程序员技术交流社区
标题:
异常总结第二篇
[打印本页]
作者:
a80C51
时间:
2015-9-17 22:01
标题:
异常总结第二篇
废话不说,直接上源代码。具体可以参见代码中注释。
/*
Note1,当此InvalidValue异常继承的是Exception,并非特别指定是Runtime异常;
故在异常位置(MyRec()和MyCircle())利用throw抛出异常,
要么采用try catch在方法内部处理;要么采用throws,让调用者来处理该异常。
*/
/*
Note2,当此InvalidValue异常继承的是RuntimeException时,
故在异常位置(MyRec()和MyCircle())利用throw抛出异常,
无需使用throws来告诉调用者处理该异常。
使用该异常的目的在于,求面积运算中,值不能为负。若为负,即便算出来,也是一个没有意义的值。
故希望程序员在调用该方法时,注意自己设计的值是否符合实际需求。
*/
/*
class InvalidValue extends Exception//Note1
{
public InvalidValue(){}
public InvalidValue(String msg)
{
super(msg);
}
}
*/
class InvalidValue extends RuntimeException//Note2
{
public InvalidValue(){}
public InvalidValue(String msg)
{
super(msg);
}
}
interface Area
{
public abstract void getArea();
}
class MyRec implements Area
{
private int length;
private int width;
public MyRec(){}
/*
public MyRec(int length,int width) throws InvalidValue//Note1
{
if((length<0)||(width<0))
throw new InvalidValue("值非法!");//Note1
this.length = length;
this.width = width;
}
*/
public MyRec(int length,int width)//Note2
{
if((length<0)||(width<0))
throw new InvalidValue("值非法!");//Note2
this.length = length;
this.width = width;
}
public void getArea()
{
System.out.println("这个长方形的面积是:"+(length*width));
}
}
class MyCircle implements Area
{
private int radius;
private static final double PI = 3.14;
public MyCircle(){}
/*
public MyCircle(int radius) throws InvalidValue//Note1
{
if(radius<0)
throw new InvalidValue("值非法!");//Note1
this.radius = radius;
}
*/
public MyCircle(int radius)//Note2
{
if(radius<0)
throw new InvalidValue("值非法!");//Note2
this.radius = radius;
}
public void getArea()
{
System.out.println("这个圆形的面积是:"+(radius*radius*PI));
}
}
public class AreaApp
{
public static void main(String[] args)
{
/*
try
{
MyRec myRec = new MyRec(-3,4);
myRec.getArea();
}
catch(InvalidValue e)
{
System.out.println(e.toString());
}
try
{
MyCircle myCircle = new MyCircle(-5);
myCircle.getArea();
}
catch(InvalidValue e)
{
System.out.println(e.toString());
}
*/
MyRec myRec = new MyRec(-3,4);
myRec.getArea();
MyCircle myCircle = new MyCircle(-5);
myCircle.getArea();
}
}
复制代码
作者:
0825梁磊
时间:
2015-9-17 22:02
赞一个!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2