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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李志广 中级黑马   /  2012-8-6 19:20  /  1501 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class NoValueException extends RuntimeException
{
        NoValueException(String msg)
                {
                super(msg);
                }
}
interface Shape
{
        void getArea();
}
class Rec implements Shape
{
        private int len;
        private int wid;
        Rec(int len,int wid)
                {
                if(len<=0||wid<=0)
                        throw new NoValueException("长方形面积怎么可能为负数!!!");
                this.len=len;
                this.wid=wid;
                }
        public void getArea()
                {
                System.out.println(len*wid);
                }
}
class ExceptionDemo2
{
        public static void main(String[] args)
                {
                        Rec r=new Rec(3,4);
                        r.getArea();               
                }
}
在毕老师讲解的视频中:NoValueException(String msg){super(msg);}它的父类是底层怎样实现的呢?还是不太清楚?
还有在自定义异常时有两种方式:一种是继承Exception,另一种是继承RuntimeException。在上面的例子中显然继承RuntimeException 时会比较简单,但是在实际的应用中
是不是尽量继承RuntimeException ? 那种继承方式更常用呢?在什么情况下必须使用继承Exception ?

               
               
               

1 个回复

倒序浏览
RuntimeException是运行时异常,包括它的子类也是运行时异常。运行时就是在编译前不是必须要处理的,相对于编译时异常。编译时异常出现错误,编译将通不过。而运行时异常即使出现了异常也能编译通过。
在Exception的所有子类中,除RuntimeException外的都是编译时异常。
编译时异常,必须声明(在方法声明后加throws 异常),或在方法体中throw一个异常,或者捕捉异常,用try .. catch做异常分支处理。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马