黑马程序员技术交流社区

标题: runtime异常不懂? [打印本页]

作者: 王会涛    时间: 2014-11-14 10:13
标题: runtime异常不懂?
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)
应该有我写的中文的非法信息,怎么没有?
作者: 王会涛    时间: 2014-11-14 10:14
noValueException后面应该有出现非法值,不是吗 咋回事?
作者: 不再上网    时间: 2014-11-14 10:22
本帖最后由 不再上网 于 2014-11-14 10:28 编辑

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


作者: 王会涛    时间: 2014-11-14 10:31
如果我要打印异常原因:比如是len为负数-2,应该为正数,咋做
作者: 王会涛    时间: 2014-11-14 10:59
不再上网 发表于 2014-11-14 10:22
搞不懂你抛RuntimeException时干嘛要自定义类来抛?还不如直接throw new RuntimeException("负数啦");publi ...

明白了 super()里面没传东西





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2