Come posso impostare il messaggio di un’Eccezione in JAVA?

Voglio impostare un messaggio di eccezione personalizzata tuttavia non sono sicuro di come fare questo. Ho bisogno di creare un’eccezione personalizzata di classe o c’è un modo più semplice di fare questo?

Scusa in anticipo se questa è una domanda semplice, tuttavia ho cercato online e non ho avuto molta fortuna.



7 Replies
  1. 10

    Bene, se le API offre un’eccezione che si adatta alle vostre esigenze (IllegalArgumentException per esempio), è sufficiente utilizzare e trasmettere il tuo messaggio nel costruttore.

  2. 27

    Più standard eccezione delle classi di fornire un costruttore che accetta un messaggio, ad esempio:

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

    Classe precedente chiama semplicemente il proprio genitore costruttore, che chiama i suoi genitori costruttore, e così via, in ultima analisi, che culmina in:

    public Throwable(String message) {
        ...
    }

    Se è possibile creare una propria classe di eccezione, credo sia una buona idea a seguito di questa convenzione.

  3. 12

    È possibile impostare solo il messaggio alla creazione di eccezione. Qui è un esempio, se si desidera impostare, dopo la creazione.

    public class BusinessException extends RuntimeException{
    
        private Collection<String> messages;
    
        public BusinessException(String msg){
            super(msg);
        }
    
    
        public BusinessException(String msg, Exception cause){
            super(msg, cause);
        }
    
    
        public BusinessException(Collection<String> messages){
            super();
            this.messages= messages;
        }
    
    
        public BusinessException (Collection<String> messages, Exception cause){
            super(cause);
            this.messages= messages;
        }
    
        @Override
        public String getMessage(){
            String msg;
    
            if(this.messages!=null && !this.messages.isEmpty()){
                msg="[";
    
                for(String message : this.messages){
                    msg+=message+",";
                }
    
                msg= StringUtils.removeEnd(msg, ",")+"]";
    
            }else msg= super.getMessage();
    
            return msg;
        }
    
    }
  4. 2

    L’approccio migliore è quello di avvolgere l’eccezione.

    try {
        my code that throws E;
    } catch (final E e) {
        throw new MyE("my message", e);
    }
  5. 2

    Radice Eccezione classe accetta un String messaggio personalizzato, come fare (per quanto posso dire) tutte le classi derivate.

    Così: no, non hai bisogno di creare una classe personalizzata. Una delle eccezioni probabilmente riguarda il tuo caso, e leggere le loro descrizioni per scoprire che). Se nessuno di questi sono veramente soddisfacente, allora si può creare un’estensione di Exception (o RuntimeException ecc) e di mantenere il messaggio personalizzato costruttore.

  6. 1

    Classe Exception (Suo padre, in realtà – Throwable) prende un messaggio come parametro nel costruttore

    throw new Exception(“messaggio”) /Exception(“messaggio”, innerException);

  7. 1

    Provare questo codice

            try{
                 throw new Exception("Bad String");
            }catch(Exception ex){
                 System.out.println(ex.getMessage());
            }

Lascia un commento