[ nikol@c @ 12.02.2009. 07:51 ] @
Na JSF stranici imam <h:messages /> tag koji mi ispisuje greske za Exceptione koji se dogode.

pitanje je, da li mogu i kako da editujem poruku za odredjeni Exception.

Takodje da li mogu da napravim sopstveni Exception koji ce se dogoditi po dogadjaju odredjenog Exceptiona
(npr. pri izvrsavanju metode entityManager.remove(customer) desi mi se java.sql.BatchUpdateException).

Da li je moguce editovati gresku za ovaj Exception?

Pozdrav.
[ zmau @ 12.02.2009. 11:22 ] @
Pogledaj specifikaciju : http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Exception.html. Znači, Exception ti je klasa kao i svaka druga.

Tu između ostalog piše da postoji metoda getMessage, ali ne piše da postoji setMessage.
Ali naravno da možeš da napraviš svoj Exception, recimo

Code:

Class NicsException extends Exception {
  public Exception(String msg){
    super(msg);
  }
  ...
}

Upozoravam te da je ovo što sam ispisao samo netestirana skica.
I onda kažeš
Code:

catch (NekiException e){
  throw new NicsException(˝poruka koju hoću da vidim˝);
}

... i blok naredbi koji poziva sve ovo dobiće tvoj exception sa tvojom porukom.
[ nikol@c @ 13.02.2009. 12:25 ] @
Da budem precizniji, ovo je metoda koja mi vraca exception:

Code:

@Transactional(TransactionPropagationType.REQUIRED)
    public boolean removeCustomer(){
        try {
            entityManager.remove(customer);
            return true;
        } catch (Exception ex) {
            return false;
        }
    }


exception mi se desi na entityManager.remove zato sto je customer foreign kljucem vezan za projekat, sto posle izaziva TranasactionRolleback, i ne mogu da obradim TransactionRolleBack exception.

[ zmau @ 15.02.2009. 20:00 ] @
Hmm, mislim da kapiram šta te žulja.
Ako ne želiš na licu mesta (u ovom keču koji si ispisao) da hendluješ exception, nego u metodi koja okida ovu metodu, onda izbriši ovaj try/catch (nek ostane sadržaj try bloka), a u zaglavlje metode dodaš throws klauzu. Znači, pisaće
Code:

public boolean removeCustomer() throws TransactionRollBackException{
            entityManager.remove(customer);
            return true;
    }


E, onda u metodi koja zove ovu metodu ispišeš nešto kao

try {
removeCustomer();
}
catch (TransactionRollBackException e){
...
}

Da li je to ono što si hteo ?