2011-07-17 11 views
20

Mam niestandardowej klasy wyjątku tak:połączeń Super Konstruktor

case class CustomException(errorMsg:String) extends Exception(error:String) 

Wszystko co muszę, że gdy złapię Wyjątkiem jest mój zwyczaj rzucać wyjątek i przekazać moje komunikat o błędzie wyjątku niestandardowej. Spodziewam się, że konstruktor CustomException wywoła super (errMsg) Jednak to nie jest to, co idzie teraz i dostałem błąd kompilacji.

catch { 
     case s: Exception => throw CustomException("This is a custom message") 
    } 

Jak mogę nazwać super konstruktora:

super(errorMessage) 

Odpowiedz

34
case class CustomException(errorMsg:String) extends Exception(errorMsg) 
+0

Thx. Jednak jestem ciekawy, dlaczego Scala nie ma super (errorMsg) jak Java! – Echo

+16

@Echo: Ponieważ nie jest to Java i ponieważ super konstruktor może być * tylko * wywoływany z podstawowego konstruktora klasy, a nawet wtedy - może być wywołany tylko jako pierwsza operacja w konstruktorze. Składnia Scala lepiej reprezentuje to podstawowe ograniczenie (narzucone przez JVM). –

+0

Co zrobić, jeśli chcesz, aby oba konstrukty wyjątków (ciąg, throwable) i (łańcuch) były zaimplementowane w niestandardowym wyjątku? – monzonj

7
case class CustomException(errorMsg:String) extends Exception(errorMsg) 

Dzwonisz konstruktora nadklasy, ale argument jesteś przejazdem (error) nie jest związany byle co.

Powiązane problemy