Java中的RuntimeException扩展

Java中的RuntimeException扩展,java,exception-handling,Java,Exception Handling,我只是在Java中为EmptyStackException添加了一个扩展,以显示一条错误消息。我已将此文件放在同一个软件包下,但出现错误: "The constructor EmptyStackException(String) is undefined" EmptyStackException.java: package mypackage; public class EmptyStackException extends RuntimeException{ private stati

我只是在Java中为EmptyStackException添加了一个扩展,以显示一条错误消息。我已将此文件放在同一个软件包下,但出现错误:

"The constructor EmptyStackException(String) is undefined"
EmptyStackException.java:

package mypackage;

public class EmptyStackException extends RuntimeException{
  private static final long serialVersionUID = 1L;
  public EmptyStackException(String message){
      super(message);
   }
}
应该很简单。但是我被卡住了!
非常感谢您的帮助。

您已经定义了自己的
EmptyStackException
,但是Java提供了
Java.util.EmptyStackException
,这意味着您认为使用自己的
EmptyStackException
的代码实际上正在使用
Java.util.EmptyStackException

要扩展
EmptyStackException
,请定义您自己的:

public MyEmptyStackExceptionWithMessage extends EmptyStackException {

在构造函数中,调用
super()
并存储您自己的消息。

您已经定义了自己的
EmptyStackException
,但是Java提供了
Java.util.EmptyStackException
,并且,这意味着您认为使用自己的
EmptyStackException
的代码实际上使用的是
java.util.EmptyStackException

要扩展
EmptyStackException
,请定义您自己的:

public MyEmptyStackExceptionWithMessage extends EmptyStackException {

在构造函数中,调用
super()
并存储您自己的消息。

看起来您正试图用您自己的类替换现有的
EmptyStackException
类;这始终是一个非常糟糕的想法(在许多Java环境中,这是不可能的。)可能出现编译错误,因为尽管您正在尝试构造类的实例,但Java编译器实际上正在尝试实例化
Java.util.EmptyStackException
,它实际上没有单参数构造函数。基本上,如果需要定义自己的异常类型,请选择平台类尚未使用的名称——这样可以避免很多麻烦。如果您的目标是真正取代JavaAPI类:放弃。这不会发生。

看起来您正试图用自己的类替换现有的
EmptyStackException
类;这始终是一个非常糟糕的想法(在许多Java环境中,这是不可能的。)可能出现编译错误,因为尽管您正在尝试构造类的实例,但Java编译器实际上正在尝试实例化
Java.util.EmptyStackException
,它实际上没有单参数构造函数。基本上,如果需要定义自己的异常类型,请选择平台类尚未使用的名称——这样可以避免很多麻烦。如果您的目标是真正取代JavaAPI类:放弃。这是不会发生的。

你能展示你创建类的
对象的全部代码吗?你能发布真正给你带来问题的代码吗?i、 例如,在调用这个构造函数的地方,你可以显示整个代码,显示你创建类的
对象
?你能发布真正给你带来问题的代码吗?i、 例如,在调用此构造函数的地方,或者使用类的完全限定名,包括包名。ie
mypackage.EmptyStackException
@Dgrin91 True,这是可能的,但OP正在尝试“扩展”。我认为OP试图扩展
EmptyStackException
,而不是定义另一个。@rgetman:谢谢,但这也不行!我得到了相同的错误消息,用于超级(msg)不要调用
super(message)
EmptyStackException
中没有接受
字符串的构造函数。如果要调用“super”,请使用
super(),并将
消息
字符串作为实例变量存储在您自己的类中。(如果不调用
super();
,那么Java将添加对
super()
的隐式调用,作为构造函数中的第一条语句。)或者使用类的完全限定名,包括包名。ie
mypackage.EmptyStackException
@Dgrin91 True,这是可能的,但OP正在尝试“扩展”。我认为OP试图扩展
EmptyStackException
,而不是定义另一个。@rgetman:谢谢,但这也不行!我得到了相同的错误消息,用于超级(msg)不要调用
super(message)
EmptyStackException
中没有接受
字符串的构造函数。如果要调用“super”,请使用
super(),并将
消息
字符串作为实例变量存储在您自己的类中。(如果不调用
super();
,那么Java将添加对
super()
的隐式调用,作为构造函数中的第一条语句。)