返回信息流import java.io.*;
class DivisorIsZeroException extends Exception
{
public DivisorIsZeroException(String name)
{
super(name);
}
}
class A
{
public int divide(int a, int b) throws DivisorIsZeroException
{
int m = 0;
if (0 == b)
throw new DivisorIsZeroException("除数不能为零! O(∩_∩)O哈哈~");
else
m = a/b;
return m;
}
}
第一个类为什么不能写成如下的格式?(会报错)难道super(name)中的name是Exception差错类中的?thanks!!
class DivisorIsZeroException extends Exception
{
String name;
public DivisorIsZeroException(String name)
{
this.name = name;
}
}
这是一条镜像帖。来源:北邮人论坛 / java / #25269同步于 2013/5/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
Java大神们look一下
L646578881
2013/5/12镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
exception 继承throwable 如果你的构造函数不带参数的话,exception也没有接受你的 "除数不能为零! O(∩_∩)O哈哈~", throwable同样,所以就不会打印出你的东西啦。看看java的源码就知道了
沙发说的在理。
想象一下,如果是你的第二种情况,那么Exception类本身怎么知道你在子类里定义了String name?Exception类怎么知道你定义的String name起什么作用呢?(难道应该把name打印出来?Exception怎么知道?)
【 在 L646578881 的大作中提到: 】
: import java.io.*;
: class DivisorIsZeroException extends Exception
: {
: ...................
【 在 nuanyangyang 的大作中提到: 】
: 沙发说的在理。
: 想象一下,如果是你的第二种情况,那么Exception类本身怎么知道你在子类里定义了String name?Exception类怎么知道你定义的String name起什么作用呢?(难道应该把name打印出来?Exception怎么知道?)
:
嗯,应该是这样的
【 在 idyllic 的大作中提到: 】
: 子类构造器第一行必须调用父类构造器啊,没有的话隐式调用父类无参构造器。如果父类没有无参构造器,或者是private构造器,就会出错。请自行查看Exception的构造器。
Exception类没有无参构造器吗?如果Exception类有无参构造器,那就不会报错了吧?
经查证Exception类有无参构造器。
请问你报了什么错?
【 在 gl5 的大作中提到: 】
:
: Exception类没有无参构造器吗?如果Exception类有无参构造器,那就不会报错了吧?
【 在 idyllic 的大作中提到: 】
: 经查证Exception类有无参构造器。
: 请问你报了什么错?
:
如果Exception有无参构造器的话,那这段代码理论上不会报错啊
class DivisorIsZeroException extends Exception
{
String name;
public DivisorIsZeroException(String name)
{
this.name = name;
}
}
name可以看成是DivisorIsZeroException子类添加的一个新的成员变量啊,然后DivisorIsZeroException默认去调Exception的无参构造函数,这样应该不会报错吧?为什么楼主说会报错呢?