黑马程序员技术交流社区

标题: 关于自定义异常的疑惑? [打印本页]

作者: 李志广    时间: 2012-8-6 19:20
标题: 关于自定义异常的疑惑?
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 ?

               
               
               


作者: 朱志辉    时间: 2012-8-9 11:17
RuntimeException是运行时异常,包括它的子类也是运行时异常。运行时就是在编译前不是必须要处理的,相对于编译时异常。编译时异常出现错误,编译将通不过。而运行时异常即使出现了异常也能编译通过。
在Exception的所有子类中,除RuntimeException外的都是编译时异常。
编译时异常,必须声明(在方法声明后加throws 异常),或在方法体中throw一个异常,或者捕捉异常,用try .. catch做异常分支处理。




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