黑马程序员技术交流社区

标题: 异常抛出的问题 [打印本页]

作者: 好大一只    时间: 2016-2-3 14:48
标题: 异常抛出的问题
public class Demo {
        public static void main(String[] args)
        {
                R r1=new R(20);
                R r2=new R(20);
                D d=new D();
                System.out.println(r1.equals(r2));
                System.out.println(r2.equals(d));
        }
}
class R
{
        private int age;
        R(int age)
        {
                this.age=age;
        }
        public boolean equals(Object obj)
        {
                if(!(obj instanceof R))
                        throw new ClassCastException("类型错误");
                R r=(R)obj;
                return this.age==r.age;
        }
}
class D
{
       
}

显示
Exception in thread "main" true
java.lang.ClassCastException: 类型错误
        at R.equals(aaaa.java:21)
        at Demo.main(aaaa.java:8)

Exception in thread "main"是个什么意思{:3_66:}
作者: 黑夜中那颗星    时间: 2016-2-3 14:57
主线程发生异常
作者: 好大一只    时间: 2016-2-3 15:13
黑夜中那颗星 发表于 2016-2-3 14:57
主线程发生异常

什么原因导致的呢
作者: jdissx01    时间: 2016-2-3 16:22
我勒个去,不是你自己写的抛出异常吗?在主线程 System.out.println(r2.equals(d));的时候,跳转到第20行判断if里面为true,执行第21行throw new ClassCastException("类型错误");后面就不再执行了.
作者: 983859111    时间: 2016-2-3 18:30
Exception in thread "main":字面意思呢是  主线程发生异常。
原因是这样的:
你的异常是自己定义的,在执行R类对象的equals方法中爆出,
但是呢,你这个方法的执行是在主线程中执行的,所以就是是在主线程中抛出异常
作者: 晓寒轻    时间: 2016-2-3 20:18
哈哈   加油 了




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