2011-10-12 14 views

Odpowiedz

7

Prawie nic:

package scala { 
    final class MatchError(obj: Any) extends RuntimeException 
    final class UninitializedError extends RuntimeException("uninitialized value") 
    final case class UninitializedFieldError (msg: String) extends RuntimeException(msg) 

    package util.regex { 
    class SyntaxError(e: String) extends RuntimeException(e) 
    } 

    package xml { 

    class BrokenException() extends java.lang.Exception 
    case class MalformedAttributeException(msg: String) extends RuntimeException(msg) 

    package dtd { 
     case class ValidationException(e: String) extends Exception(e) 
    } 

    package include { 
     class CircularIncludeException(message: String) extends XIncludeException 
     class UnavailableResourceException(message: String) extends XIncludeException(message) 
     class XIncludeException(message: String) extends Exception(message) 
    } 

    package parsing { 
     case class FatalError(msg: String) extends java.lang.RuntimeException(msg) 
    } 
    } 
} 

Reszta pochodzi z Java, które obejmują prawie wszystkie narożniki. Nasuwa się pytanie, co te metody Scali rzucają na inne platformy, prawda?

+0

Daje to całkiem rzetelne wyobrażenie o tym, jak łatwo jest wyrzucać własne niestandardowe wyjątki, a nawet błędy, jeśli działa z Javą. Po prostu utwórz klasę jednej linii w obiekcie i użyj jej w razie potrzeby. Ostateczna klasa MyException (arg: String) rozszerza RuntimeException() lub jak widać w FatalError z java.lang.RuntimeException (msg). Niezły, Sobral. –

2

NotImplementedException jest obecnie uważany za Scala 2.10, prawdopodobnie. Zobacz tę thread.

+1

'UnsupportedOperationException' oczywiście nie jest brany pod uwagę w Scali 2.10. Od dawna jest częścią biblioteki Java. Wątek dotyczy dodania metody comfortce, która rzuca ją do Predef. –

+1

Po pierwsze, UnsupportedOperationException i NotImplementedException oznaczają zupełnie różne rzeczy i oba są potrzebne (użyłem ich obu w projektach C# moich). A pytanie brzmi: co dziś używać w Scali 2.9.1? Używam do zdefiniowania klasy, a następnie zaimplementuję ją metoda-by-metoda, używając "throw new NotImplementedException()" jako jeszcze nie zaimplementowanych ciał metod i kompilując projekt wiele razy zanim zaimplementuję wszystko. Ale w Scali wygląda na to, że muszę zaimplementować wszystkie funkcje, zwracając jakieś fałszywe dane - może to powodować błędy i jest po prostu denerwujące. – Ivan

+0

Od 2.10, '???' zostało dodane do 'Predef'. Możesz teraz napisać kod taki jak 'class Thing {def getThing = ??? } '. Wywołanie 'getThing' spowoduje podniesienie' scala.NotImplementedError' z komunikatem "brak implementacji". – afternoon

2

Można po prostu użyć tego, co domyślne już istnieje w Javie. Scala tak naprawdę nie dodaje nic do standardowych wyjątków w Javie.

Powiązane problemy