捕获EmptyStackException与Testing是否为空

Roh*_*ver 3 java stack exception-handling

我有一个Stack对象由多个线程处理.其中一个线程是一个工作线程,它对Stack对象执行pop操作.我想处理堆栈为空的情况,我看到两个选项

try{
    Object obj = (Object) d_stackObj.pop(); 
   } 
catch (EmptyStackException e) 
   { ...}
Run Code Online (Sandbox Code Playgroud)

要么

if( ! d_stackObj.empty() ) 
   Object obj = (Object) d_stackObj.pop(); 
else
   { ...}
Run Code Online (Sandbox Code Playgroud)

我的问题是,上述哪种方法更好,为什么?

谢谢!

The*_*eek 5

我认为更好的方法是检查堆栈是否为空,如第二个例子中所示.

捕获异常代价高昂!

  • 我不会过分担心表现 (2认同)