2017-04-21 4 views
2

Ich habe die folgende Methode für eine ArrayList zu implementieren, aber ich bin mir nicht sicher, wie die Ausnahme behandelt werden soll. Wenn die ArrayList leer ist, wird diese Ausnahme automatisch ausgelöst oder muss ich etwas in die Methode schreiben?Ausnahmen in der Methodendeklaration in Java

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

Antwort

2

Eine Ausnahme ist ein Objekt, das throwable erweitert. Sie würden schreiben, dass sich

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

Korrekt, aber das 'else' ist albern ;-) Siehe ControlAltDel für eine bessere Alternative. –

0

Sie müssen die Ausnahme selbst werfen, wenn die ArrayList leer.

Die throws EmptyCollectionExceptio Klausel in der Methodensignatur ist nur eine Erinnerung daran, für die Code Aufruf, dass removeLast() eine Ausnahme auslösen könnte (und richtig gehandhabt werden soll).

0

EmptyCollectionException ist keine bestehende Ausnahme. Definieren Sie eine neue Ausnahme:

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

oder benutzen IndexOutOfBoundsException stattdessen können Sie auch einen try catch Block verwenden:

try{ 

    //Whatever could cause the exception 

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

Finden Sie mich EmptyCollectionException im JDK. Wie wird es es werfen? http://docs.oracle.com/javase/7/docs/api – ControlAltDel

+0

@ControlAltDel mit IndexOutOfBoundsException –

3

Sie haben nicht in dem Verfahren gefüllt, so können wir nicht sicher sagen. Wenn Sie ArrayList.remove (0) verwendet haben, in einer leeren Liste würde es Ihnen eine IndexOutOfBoundsException geben

In jedem Fall wird es nie Ihre benutzerdefinierte Ausnahme werfen: Sie müssen dies selbst werfen. Sie können dies am Anfang der Methode tun, wie

0

Zuerst Sie define your custom exception müssen. Das könnte sein:

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

Dann Sie die Ausnahme, wie in einigen der anderen Antworten gepostet werfen.

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