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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 姬仁贵 中级黑马   /  2012-7-24 09:00  /  3391 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class FuShuException extends Exception
{
private String msg;
FuShuException(String msg)
{
  this.msg = msg;
}
public String getMessage()
{
  return msg;
}
}
class Demo
{
int div(int a,int b) throws FuShuException
{
  if (b<0)
   throw new FuShuException("出现了除数为负数了 / by fushu");//这行语句开始不明白了。我知道这行语句是手动的抛出异常的一个类的对象,但是为什么里面还可以带一个参数?
                                                                                                    //这个参数传出去后又是谁来接收呢?
                                                                                                    //请教这个对象里面的参数是怎么一步一步传递的????
                  
  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());//这个通过toString()自动调用异常类里面的getMessage()方法。
    System.out.println("除数出现负数了");
   }
   
   
   System.out.println("over");

}
}

//throw new FuShuException("出现了除数为负数了 / by fushu");
//这一句是不是先创建FuShuException的对象然后再调用FuShuException(String msg)这个构造方法呀?

评分

参与人数 1技术分 +1 收起 理由
田向向 + 1 赞一个!,,加油

查看全部评分

5 个回复

倒序浏览
本帖最后由 田向向 于 2012-7-24 09:13 编辑

throw new FuShuException("出现了除数为负数了 / by fushu");//这行语句开始不明白了。我知道这行语句是手动的抛出异常的一个类的对象,但是为什么里面还可以带一个参数?

这句话是当你程序出现异常时,提示你是什么样的异常      出现了除数为负数了 / by fushu,

//这一句是不是先创建FuShuException的对象然后再调用FuShuException(String msg)这个构造方法呀?
当你程序出现异常时,就会手动通过throw关键字抛出自定义异常




对于异常这一块,我也不是很明白,,但是凭我的理解,大概就这么个意思。呵呵,见笑了
回复 使用道具 举报
java是把异常情况交给方法的设计者来做。在方法时处理可能发生的异常情况。
谁调用,谁处理
回复 使用道具 举报
有谁调用就返回给谁啊 ,对于抛异常的问题就是先创建异常对象,然后让它继承Exception类,因为他是
异常的上帝奥
回复 使用道具 举报
本帖最后由 于星星 于 2012-7-24 10:18 编辑
复制代码
class FuShuException extends Exception
{
private String msg;
FuShuException(String msg)
{
  System.out.println(msg+"出现了异常调用构造方法------------");
   this.msg = msg;
}
public String getMessage()
{
   return msg;
}
}
class Demo1
{
int div(int a,int b) throws FuShuException
{
   if (b<0)
    throw new FuShuException("出现了除数为负数了 / by fushu");//这行语句开始不明白了。我知道这行语句是手动的抛出异常的一个类的对象,但是为什么里面还可以带一个参数?
   return a/b;
}
}
public class ExceptionDemo3
{
public static void main(String[] args)
{
  Demo1 d = new Demo1();
    try
    {
     int x = d.div(4,-1);
     System.out.println("x="+x);
    }
    catch (FuShuException e)//这里捕捉抛出的异常。
    {
      System.out.println(e.toString());//这个通过toString()自动调用异常类里面的getMessage()方法。
      System.out.println("除数出现负数了");
    }
   
    System.out.println("over");
}
}

//throw new FuShuException("出现了除数为负数了 / by fushu");
//这一句是不是先创建FuShuException的对象然后再调用FuShuException(String msg)这个构造方法呀?


这个先调用FuShuException的有参数构造方法,将错误信息封装在了你定义的成员变量 private String msg;中,当执行到 if (b<0)条件满足,就会抛出这个异常,在下面额主函数中抓住了这个异常,然后在里面打印

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刘海源 发表于 2012-7-24 09:50
有谁调用就返回给谁啊 ,对于抛异常的问题就是先创建异常对象,然后让它继承Exception类,因为他是
异常的 ...

我想问的是为什么手动抛出的异常对象可以带着参数,这个参数又是具体怎么传递下去的呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马