¿Cómo puedo crear un nuevo Exception diferente de la pre-hechos de los tipos?

public class InvalidBankFeeAmountException extends Exception{
    public InvalidBankFeeAmountException(String message){
        super(message);
    }
 }

Se mostrará la advertencia para el InvalidBankFeeAmountException que está escrito en la primera línea.

  • He creado una Excepción por mí mismo que se muestra más arriba.crear una clase con el nombre de la excepción especial y se extiende la Excepción. PERO ha advertencia:La clase serializable <nombre de la Excepción>Excepción no declarar un static final serialVersionUID campo de largo. ¿Cómo puedo solucionarlo?????
  • Usted no tiene que preocuparse acerca de que la advertencia de que si usted no lo desea. Porque la clase de Excepción es serializable se requiere establecer una serie de identificación de la clase. Pero, ya que es sólo una advertencia, por lo general lo ignoran.
  • pero cuando yo uso esta clase como un tipo en el método main() de la otra advertencia se muestra que:no se Puede tirar el tipo InvalidBankFeeAmountException.
  • ¿Se declare como «lanza InvalidBankFeeAmountException»?
  • El error que usted está consiguiendo que me lleva a creer que no están correctamente la ampliación de la Excepción.
InformationsquelleAutor Johanna | 2009-07-01

4 Comentarios

  1. 111

    Todo lo que necesita hacer es crear un nuevo class y tienen extend Exception.

    Si quieres un Exception que no está marcada, se necesita extend RuntimeException.

    Nota: Una marcada Exception es uno que requiere que rodean la Exception en un try/catch bloque o tener un ‘throws‘ cláusula en la declaración del método. (como IOException) Unchecked Exceptions puede ser lanzado como comprueban Exceptions, pero no es necesario gestionar de forma explícita de los mismos en cualquier forma (IndexOutOfBoundsException).

    Por ejemplo:

    public class MyNewException extends RuntimeException {
    
        public MyNewException(){
            super();
        }
    
        public MyNewException(String message){
            super(message);
        }
    }
    • Nota: si está utilizando Eclipse, basta con escribir ‘throw new <CustomName>la Excepción’, y, a continuación, utilizar la corrección automática (Ctrl+1). Esto va a crear una nueva clase que extiende la Excepción, y contiene el código repetitivo.
    • He oído que puede ser una mala práctica para ampliar RuntimeExceptions: Si un cliente puede esperar razonablemente para recuperarse de una excepción, hacen una excepción comprobada. Si un cliente no puede hacer nada para recuperarse de la excepción, hacen de él un desactivada excepción.
    • Acabo de leer el resto de la respuesta, te tenemos cubierto, solo me falta más que leer el código antes de comentar.
    • Yo no creo que sea una mala práctica para extender RuntimeException. Que sin duda hace que su código sea más fácil de utilizar si no hay excepciones comprobadas por todo el lugar.
  2. 33

    sólo ampliar cualquiera de

    • Exception, si desea que su excepción a comprobar (he.e: se requiere de una cláusula throws)
    • RuntimeException, si desea que su excepción a estar desmarcada.
  3. 6

    Asegúrese de no ir por la borda con excepciones, especialmente excepciones comprobadas. Me gustaría recomendar la lectura del Capítulo 9 de Joshua Bloch Efectiva de Java, y en particular su Artículo 60 (Favorecer el uso de la norma excepciones). Sus recomendaciones también incluyen el uso de excepciones comprobadas para las excepciones que puede ser recuperado de, el uso descontrolado de las excepciones (RuntimeExceptions) por errores de programación, y evitar el uso innecesario de excepciones comprobadas.

    Si un InvalidBankAccount excepción se produce cuando un error de programación se encuentra, usted probablemente sólo quiere lanzar una norma desactivada Java IllegalStateException lugar. (Esta perfectamente deja de lado la necesidad de declarar el serialVersionUID.)

  4. 3

    Echa un vistazo a:

    http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=1

    Un ejemplo es mostrado en la página 2:

    public class DuplicateUsernameException
        extends Exception {
        public DuplicateUsernameException 
            (String username){....}
        public String requestedUsername(){...}
        public String[] availableNames(){...}
    }

    junto con un conjunto de pautas de cuándo y por qué te gustaría crear tus propias excepciones.

Dejar respuesta

Please enter your comment!
Please enter your name here