2017-04-21 6 views
2

次のメソッドをArrayListに実装していますが、例外の処理方法についてはわかりません。 ArrayListが空の場合、自動的にその例外がスローされるか、メソッドに何かを書く必要がありますか?Javaのメソッド宣言の例外

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

答えて

2

例外はスロー可能オブジェクトを拡張しています。 あなた自身が

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

正しいですが、elseは愚かです;-)より良い代替方法については、ControlAltDel answerを参照してください。 –

0

あなたは例外をスローする必要が自分をArrayListが空の場合。メソッドシグネチャに

throws EmptyCollectionExceptio句はremoveLast()が例外をスローする可能性がある(そして適切に処理しなければならない)こと、呼び出すコードため、唯一のリマインダーです。

0

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(); 
} 
+1

私には、JDKのEmptyCollectionExceptionが見つかりました。どのようにそれをスローするつもりですか? http://docs.oracle.com/javase/7/docs/api – ControlAltDel

+0

@ControlAltDel IndexOutOfBoundsExceptionを使用しています。 –

3

あなたはこの方法では満たされていないので、私たちは確かに言うことはできません。 ArrayList.remove(0)を使用した場合。空のリストでは、それはあなたにIndexOutOfBoundsExceptionを与えるでしょう

いずれにしても、あなたはあなたのカスタム例外を投げることはありません。これは、メソッドの先頭で行うことができます。

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

まず、あなたがdefine your custom exceptionする必要があることを書くでしょう。その可能性があります:

他の回答のように例外をスローすることができます。

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