抛出StackUnderFlowException - 怎么做?这是否代价高昂?

时间:2013-07-20 09:00:14

标签: java exception exception-handling stack

我有一个可能是空的Stack。我想检查它是否为空,如果是,我想抛出StackUnderFlowException

if(myStack.empty()) {
   throw new StackUnderFlowException("Some error message");
}

问题:

  1. 这有效吗?我知道你不打算使用Exceptions进行流量控制..我不认为我是因为我明确检查堆栈是否为空?
  2. 如何导入StackUnderFlowException类,因为我此刻收到此错误:

    PriceHolder类型的方法foo(String)引用缺少的类型StackUnderFlowException

  3. 非常感谢。

2 个答案:

答案 0 :(得分:1)

从概念上讲,您将流量控制用于您期望发生的事情,并将事件的异常用于不应发生的事情。在我看到的大多数库(包括标准Java库)中,尝试访问不存在的容器元素被认为是编程错误,并且通常使用异常或类似机制发出信号。

对于#2,您需要确定StackUnderFlowException所在的包。如果您需要帮助,请指定您正在使用的StackUnderFlowException。

答案 1 :(得分:0)

  

效率这么高吗?

当然可以。它应该永远不会发生,除了带有错误的代码,谁关心代码是如何无法正确执行的?

  

我知道你不打算使用Exceptions进行流量控制。

无论那意味着什么。这个gnomic pronunciamento 的问题在于,例外一种流控制形式。对于此业务中收到的意见,请不要太垂涎。其中许多都是短暂的,还有更多是毫无价值的。在这种情况下,抛出异常是完全合理的。在这种情况下比使用带外返回值更好,有时不是任何带外返回值。

  

我不认为我是因为我明确检查堆栈是否为空?

我不明白这句话的相关性。

  

如何导入StackUnderFlowException类

什么 StackUnderflowException课程? JDK中没有一个。你必须吗?