java 中的方法声明异常

Exceptions in method declaration in java

我有以下方法可以为 ArrayList 实现,但我不确定如何处理异常。如果 ArrayList 为空,它会自动抛出该异常还是我需要在方法中写一些东西?

public T removeLast() throws EmptyCollectionException
{
    //TODO: Implement this.
}

如果 ArrayList 为空,您需要自己抛出异常

方法签名中的throws EmptyCollectionExceptio子句只是提醒,对于调用代码removeLast()可能会抛出异常(并且应该是妥善处理)。

EmptyCollectionException 不是现有异常。定义一个新的异常:

if(list.IsEmpty()){
throw new EmptyCollectionException("message");
}

或者改用 IndexOutOfBoundsException,您也可以使用 try catch 块:

try{

   //Whatever could cause the exception

}catch(IndexOutOfBoundsException e){
   //Handle the exception
   //e.printStackTrace();
}

您没有填写方法,所以我们不能确定。如果你使用 ArrayList.remove(0);在一个空列表上,它会给你一个 IndexOutOfBoundsException

无论如何,它永远不会抛出您的自定义异常:您需要自己抛出它。您可以在方法的顶部执行此操作,例如

public T removeLast() throws EmptyCollectionException
{
  if (myList.size() == 0) throw new EmptyCollectionException("List Is Empty");
  ... //otherwise...
}

异常是一个扩展了throwable的对象。 你会自己写

if(list.isEmpty()){
    throw new EmptyCollectionException("possibly a message here");
} else {
    //your logic here to return a T
}

首先,您需要define your custom exception。那可能是:

public class EmptyCollectionExceptionextends Exception {
    public EmptyCollectionException(String message) {
        super(message);
    }
}

然后您可以像发布的其他一些答案一样抛出异常。

public T removeLast() throws EmptyCollectionException
{
  if (myList.size() == 0) throw new EmptyCollectionException("List Is Empty");
  ... //otherwise...
}