2012-03-21 11 views
7

Quindi il mio compito può sembrare semplice, ma ha me boggled. Ho guardato attraverso il codice su internet, ma non riesco a fare i conti con. Né posso fare i conti con le diapositive pubblicate dal mio insegnante. Questo è ciò che è richiesto da me.bisogno di creare una nuova RuntimeException per EmptyStacks

Creare un nuovo tipo di eccezione di runtime chiamato EmptyStackException.

Tuttavia non ho idea di come fare il metodo, classe, variabile o ciò che deve essere fatto al fine di soddisfare il requisito. Ho alcune classi che sono implementazioni di un DynamicArrayStack e un LinkedStack. Un'interfaccia per Stack.

Qualsiasi puntatori sarebbe potentemente utile.

Grazie

Mjall2

risposta

15

Creare un nuovo tipo di eccezione di runtime chiamato EmptyStackException.

tipo di creare è fatto da

public class EmptyStackException extends RuntimeException { ... } 

Ora, se solo sapessimo cosa mettere in questo nuovo tipo (classe anche noto come). In genere osserviamo i metodi nella superclasse e ignoriamo quelli che richiedono una gestione diversa. Di seguito ho ignorato alcuni di essi ma delegato alla classe esistente. Non è necessario eseguire questa operazione se non è necessario apportare modifiche al comportamento.

public class EmptyStackException extends RuntimeException { 
     public EmptyStackException() { 
      super(); 
     } 
     public EmptyStackException(String s) { 
      super(s); 
     } 
     public EmptyStackException(String s, Throwable throwable) { 
      super(s, throwable); 
     } 
     public EmptyStackException(Throwable throwable) { 
      super(throwable); 
     } 
    } 
+0

Chiamando super(), chiama il costruttore di RuntimeException, che genera un'eccezione di run time! – Mjall2

+2

Chiamare super() dovrebbe * costruire * una RuntimeException, non * genera * un'eccezione. – Jim

+0

ma quando vogliamo lanciarne uno, lanciare una nuova EmptyStackException(); Questo getterà un runtimeexception credo? – Mjall2

1

Suoni come se doveste leggere su Java. Controlla The Java Tutorials, in particolare questo su Exceptions.


Per dirla semplicemente, eccezioni sono un particolare tipo di oggetto che rappresenta un evento al di fuori del normale funzionamento del codice, causando control flow per essere sovvertita. Ad esempio, un ArrayIndexOutOfBoundsException indica che il codice ha tentato di indicizzare una posizione in un array che non esisteva, ad esempio -1.

A causa della loro associazione con gli insetti, le eccezioni hanno spesso una connotazione negativa per i programmatori più recenti. Ma poiché Java è Object Oriented, è possibile estendere lo RuntimeException per creare i propri tipi di eccezioni personalizzati, che sono molto utili per il debug e la chiarezza del codice. Per generare un'eccezione personalizzata mentre il codice è in esecuzione, dovrai (1) definire l'eccezione personalizzata, (2) rilevare la condizione eccezionale e (3) throw l'eccezione.

Il modo più semplice per definire la vostra abitudine RuntimeException è quello di definire una classe come:

public EmptyStackException extends RuntimeException { 
    // customize error messages if necessay 
} 

allora si sarebbe rilevare e gettare la Exception come:

if (/** stack is empty */) { 
    throw new EmptyStackException(); 
} 

Queste sono solo le basi. È inoltre possibile definire eccezioni personalizzate on the fly. Spero che questo ti aiuti!

3

Per fare ciò, è necessario estendere la classe RuntimeException.

Esistono due tipi di eccezioni in Java: eccezioni deselezionate e controllate. RuntimeExceptions sono del secondo tipo. Ciò significa che non devono essere esplicitamente gestiti e dichiarati.

Normalmente, si utilizzano eccezioni controllate quando si scrivono eccezioni personalizzate. Questo viene fatto estendendo la classe Exception. Non vedo alcun caso di utilizzo per la creazione di una personalizzata RuntimeException.

In ogni caso, il codice seguente mostra come scrivere il proprio RuntimeException:

public class EmptyStackException extends RuntimeException{ 

    public EmptyStackException(String message){ 
     super(message); 
    } 

} 

Da all'interno del codice sorgente si potrebbe usare questo dal seguente dichiarazione:

throw new EmptyStackException("Stack was Empty, can't pop"); 

Per ulteriori informazioni riguardanti le eccezioni ti consiglio quanto segue Tutorial

Problemi correlati