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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王廷顺 中级黑马   /  2013-4-21 15:03  /  1029 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王廷顺 于 2013-4-22 22:52 编辑

代码如下:
class FuShuException extends Exception
{

}
class Demo
{
   int div(int a,int b)throws FuShuException
    {
       if(b < 0)
         throw new FuShuException();//手动通过throw关键字抛出一个自定义异常对象

        return a/b;
    }                                      
}

class ExceptionDemo3
{
      public static void main(String[] args)
      {
            Demo d = new Demo();
            try
            {
                int x = d.div(4,-1);
                System.out.println("x="+x);
            }
            catch(FuShuException e)
            {
                System.out.println(e.toString());
                System.out.println("除数出现负数了");
            }

         
            System.out.println("over");
      }
}

运行完打印的结果是:
FuShuException
除数出现负数了
over
我的问题是,System.out.println(e.toString());这条语句执行完为什么打印的是FuShuException;以及执行的流程。

评分

参与人数 1技术分 +1 收起 理由
王怀亮 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 陈雨 于 2013-4-21 15:42 编辑

class FuShuException extends Exception
{

}
class Demo
{
int div(int a,int b)throws FuShuException
{
if(b < 0)
throw new FuShuException();//3.产生new FuShuException()对象,抛给调用者及虚拟机,主函数产生异常的位置

return a/b;
}
}

class ExceptionDemo3
{
public static void main(String[] args)
{
Demo d = new Demo();//1.建立对象
try//4.try捕捉到FuShuException,交给Catch
{
int x = d.div(4,-1);//2.调用div( )
System.out.println("x="+x);
}
catch(FuShuException e)//5.接受new FuShuException(),这里相当于FuShuException e=new FuShuException()
{
System.out.println(e.toString());
System.out.println("除数出现负数了");
}


System.out.println("over");
}
}
toString(),返回的是异常名称,异常信息。因为你没有自定义异常信息,所以只返回异常的名称。

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
明白了 非常感谢{:soso_e181:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马