我在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
}
我的问题是,哪种方式是最佳做法,还是有其他方式?
答案 0 :(得分:1)
EmptyStackException
课程是自我解释的。不要认为需要任何其他消息。我会保持原样:)。如果您仍然需要消息,那么创建自定义异常类就是广泛使用的方法。
答案 1 :(得分:1)
创建您自己的自定义异常,如下所示:
public class EmptyParameterException extends Exception {
public EmptyParameterException (String message) {
super(message);
}
}