A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王会涛 中级黑马   /  2014-11-14 10:13  /  903 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package day03;

/*需求:有一个圆形和长方形。都可以获取面积。对于面积如果出现非法的数值,视为获取面积出现问题。问题通过异常来表示。
*/
class NoValueException extends RuntimeException
{
public NoValueException(String msg) {
        super();
}
}
//把面积设计成扩展功能;定义成接口;
interface Shape
{
void getArea();
}
//长方形
class Rec implements Shape
{
private int len,wid;
Rec(int len,int wid)//throws NoValueException
{
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)//throws  NoValueException
{
if(radius <=0)
throw new NoValueException("非法");
this.radius =radius;

}
public void getArea()
{
System.out.println(radius*radius*PI);
}
}




public class  ExceptionDemo6
{
public static void main(String[] args)
{

//当数值不为负数时了正常运行出结果,当为负数是,因为是runtimeException异常,所以程序直接停掉,
        Rec r = new Rec(-2,4);
        r.getArea();
        /*Circle c = new Circle(5);
        c.getArea();*/
        System.out.println("over");





}
}
为什么我的结果是这样
Exception in thread "main" day03.NoValueException
        at day03.Rec.<init>(ExceptionDemo6.java:23)
        at day03.ExceptionDemo6.main(ExceptionDemo6.java:61)
应该有我写的中文的非法信息,怎么没有?

4 个回复

正序浏览
不再上网 发表于 2014-11-14 10:22
搞不懂你抛RuntimeException时干嘛要自定义类来抛?还不如直接throw new RuntimeException("负数啦");publi ...

明白了 super()里面没传东西
回复 使用道具 举报
如果我要打印异常原因:比如是len为负数-2,应该为正数,咋做
回复 使用道具 举报
本帖最后由 不再上网 于 2014-11-14 10:28 编辑

搞不懂你抛RuntimeException时干嘛要自定义类来抛?还不如直接throw new RuntimeException("负数啦");public NoValueException(String msg) {
        super();
}
你的是由于这段代码出错。你传的msg参数进去构造函数后,丢弃不用,直接调用父类的无参构造了

回复 使用道具 举报
noValueException后面应该有出现非法值,不是吗 咋回事?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马