黑马程序员技术交流社区

标题: 异常的异常- - [打印本页]

作者: 曾振华    时间: 2013-10-12 17:18
标题: 异常的异常- -
本帖最后由 曾振华 于 2013-10-12 18:45 编辑

class FuShuException extends Exception
{
private int value;
//private String msg;
FuShuException(String msg)
{
  //this.msg = msg;
  super(msg);
  this.value = value;
}
public int getValue()
{
  return value;
}
//public String getMessage()
//{
  //return msg;
//}
}

class Demo
{
int div (int a ,int b)throws FuShuException
{
  if(b<0)
   throw new FuShuException("除数出现了负数-- /bu fushu",b);
  return  a/b;
}
}


class  ExceptionDemo
{
public static void main(String[] args)
{
  Demo de = new Demo();
  try
  {
   int x = de.div(4,-2);
   System.out.println("x="+x);
  }
  catch (FuShuException e)
  {
   System.out.println(e.toString());
   //System.out.println("出现负数了");
   System.out.println("错误的负数是"+e.getValue());
  }
  System.out.println("over");
}
}

自定义一个当除数为负数就是异常的程序,编译时出现了异常- -



这是什么情况啊?


作者: hello菜菜    时间: 2013-10-12 17:26
FuShuException(String msg)
throw new FuShuException("除数出现了负数-- /bu fushu",b);
问题出现在这,构造方法少一个参数int value,加上就好了!

作者: 曾振华    时间: 2013-10-12 17:31
hello菜菜 发表于 2013-10-12 17:26
FuShuException(String msg)
throw new FuShuException("除数出现了负数-- /bu fushu",b);
问题出现在这, ...

private int value

这个好像定义过了吧
作者: Jam-l    时间: 2013-10-12 17:32
本帖最后由 Jam-l 于 2013-10-12 17:34 编辑

原因是你的异常FuShuException类的构造函数参数是只有字符串类型的FuShuException(String msg),而你在抛出异常多带了整型参数,应该把throw new FuShuException("除数出现了负数-- /bu fushu",b),改为throw new FuShuException("除数出现了负数-- /bu fushu"); 或者把构造函数改为FuShuException(String msg,int value),就可以了。纯手打,自己经过调试了,请版主给给分 - -
作者: hello菜菜    时间: 2013-10-12 17:35
曾振华 发表于 2013-10-12 17:31
private int value

这个好像定义过了吧

这个是定义的类变量,另一个是参数变量(只在这个函数起作用),两者不一样!
作者: 曾振华    时间: 2013-10-12 17:44
hello菜菜 发表于 2013-10-12 17:35
这个是定义的类变量,另一个是参数变量(只在这个函数起作用),两者不一样! ...

:L

确实漏了这个东西。。。

问你个小问题啊

你怎么上传图片的啊,我截图的时候图片很大的,为什么上传后这么小呢?有什么办法让图片上传后保证原来的像素,是哪里没设置好吗?谢谢了。
作者: hello菜菜    时间: 2013-10-12 17:52
曾振华 发表于 2013-10-12 17:44
确实漏了这个东西。。。

问你个小问题啊

你可以在高级模式里,添加附件,就OK了啊
作者: 阿里策    时间: 2013-10-12 18:03
    FuShuException这个类的构造函数只有一个:FuShuException(String msg),它是一个参数的构造函数,只能创建一个参数的对象,而你在Demo中throw new FuShuException("除数出现了负数-- /bu fushu",b);这是调用了两个参数的构造函数,所以说会报错。将上述代码去掉参数“b”修改为:throw new FuShuException("除数出现了负数-- /bu fushu");就不会出现这个错误了。




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