2012-03-21 13 views
7

Así que mi tarea puede sonar simple, pero me tiene aturdido. He revisado el código en Internet, pero no puedo entenderlo. Tampoco puedo familiarizarme con las diapositivas que mi maestra publicó. Esto es lo que se requiere de mí.Necesito crear una nueva excepción RunTimeException para EmptyStacks

Cree un nuevo tipo de excepción de tiempo de ejecución llamado EmptyStackException.

Sin embargo, no tengo ni idea de cómo hacer el método, la clase, la variable o lo que sea necesario para cumplir con el requisito. Tengo algunas clases que son implementaciones de DynamicArrayStack y LinkedStack. Una interfaz para Stack.

Cualquier apuntador sería de gran ayuda.

Gracias

Mjall2

Respuesta

15

Crear un nuevo tipo de excepción de tiempo de ejecución denominado EmptyStackException.

crear texto se hace por

public class EmptyStackException extends RuntimeException { ... } 

Ahora bien, si tan sólo supiéramos qué poner en este nuevo tipo (clase alias). Normalmente observamos los métodos en la superclase y anulamos aquellos que necesitan un manejo diferente. A continuación he anulado algunos de ellos, pero delegué nuevamente a la clase existente. No es necesario hacer esto si no necesita realizar ningún cambio en el comportamiento.

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

Llamar a super(), llama al constructor de RuntimeException, que lanza una excepción de tiempo de ejecución. – Mjall2

+2

Llamar a super() debe * construir * una RuntimeException, no * arroja * una excepción. – Jim

+0

correcto, pero cuando queremos lanzar uno, throw new EmptyStackException(); Esto arrojará una excepción de tiempo de ejecución, ¿no cree? – Mjall2

1

Parece que es posible que desee leer sobre Java. Consulte The Java Tutorials, especialmente este sobre Exceptions.


En pocas palabras, excepciones son un tipo especial de objeto que representa un evento fuera de la operación normal de su código, haciendo que control flow a ser subvertidos. Por ejemplo, un ArrayIndexOutOfBoundsException significa que su código intentó indexar a una posición en una matriz que no existía, como -1.

Debido a su asociación con errores, a menudo las excepciones tienen una mala connotación para los programadores más nuevos. Pero como Java es Object Oriented, puede ampliar RuntimeException para crear sus propios tipos de excepción personalizados, lo cual es bastante útil para la depuración y la claridad del código. Para lanzar una excepción personalizada mientras se está ejecutando su código, deberá (1) haber definido la excepción personalizada, (2) detectar la condición excepcional y (3) throw la excepción.

La manera fácil de definir su costumbre RuntimeException es definir una clase como:

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

Entonces será detectar y lanzar la Exception como:

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

Estos son sólo los conceptos básicos. También puede definir excepciones personalizadas on the fly. ¡Espero que esto ayude!

3

Para hacerlo, debe extender la clase RuntimeException.

Existen dos tipos de excepciones en Java: excepciones no verificadas y marcadas. RuntimeExceptions son del segundo tipo. Esto significa que no necesitan ser explícitamente manejados y declarados.

Normalmente, se usan excepciones comprobadas al escribir excepciones personalizadas. Esto se hace extendiendo la clase Exception. No veo ningún caso de uso para crear un RuntimeException personalizado.

De todos modos, el código siguiente muestra cómo escribir su propio RuntimeException:

public class EmptyStackException extends RuntimeException{ 

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

} 

Desde dentro de su código fuente puede utilizar esta en la siguiente declaración:

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

Para obtener más información sobre excepciones Te recomiendo lo siguiente Tutorial

Cuestiones relacionadas