Java中的EmptyStackException自定义错误消息?

时间:2017-09-20 10:44:37

标签: java

我在Java中实现Stack。对于pop操作,我想抛出EmptyStackException。根据{{​​3}},EmptyStackException有一个构造函数EmptyStackException()。它 -

  

构造一个新的EmptyStackException,并将null作为其错误消息字符串。

因此它不能将我的自定义错误消息作为参数。我需要设置自定义错误消息,因为它具有null作为错误消息,getMessage()返回null。如果我使用此异常,我必须硬编码我的错误消息,我抓住EmptyStackException

public int pop() {
    if (empty())
        throw new EmptyStackException(); // cannot take error message as argument
    int data = top.getData();
    top = top.getNext();
    return data;
}
public static void main(String[] args) {
    Stack stack = new Stack();
    try {
        System.out.println(stack.pop());
    } catch (EmptyStackException e) {
        System.out.println("Stack is empty");  // my hardcoded message
}

另一种方法是使用Exception代替EmptyStackException。它有一个构造函数:Exception(String message)。使用此功能,我可以设置自定义消息。

public int pop() throws Exception {
    if (empty())
        throw new Exception("Stack is empty"); // take message as argument
    int data = top.getData();
    top = top.getNext();
    return data;
}
public static void main(String[] args) {
    Stack stack = new Stack();
    try {
        System.out.println(stack.pop());
    } catch (Exception e) {
        System.out.println(e.getMessage()); //print message set from the throwing position
}

我的问题是,哪种方式是最佳做法,还是有其他方式?

2 个答案:

答案 0 :(得分:1)

EmptyStackException课程是自我解释的。不要认为需要任何其他消息。我会保持原样:)。如果您仍然需要消息,那么创建自定义异常类就是广泛使用的方法。

答案 1 :(得分:1)

创建您自己的自定义异常,如下所示:

public class EmptyParameterException extends Exception {

    public EmptyParameterException (String message) {
        super(message);
    }

}