2011-10-12 26 views

cevap

7

Neredeyse hiçbir şey:

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) 
    } 
    } 
} 

dinlenme hemen hemen her yerini kapsama Java, geliyor. Bu Scala yöntemlerinin diğer platformlara ne attığını soruyor, değil mi?

+0

Bu, kendi özel İstisnalarınızı ve hatta Java ile çalışıyorsa bile hataları atmanın ne kadar kolay olduğuna dair oldukça adil bir fikir verir. Bir nesnede sadece bir satır sınıfı yapın ve gerektiği şekilde kullanın. son sınıf MyException (arg: String), RuntimeException() öğesini ya da FatalError'da görüldüğü gibi java.lang.RuntimeException (msg) ile genişletir. Güzel bir Sobral. –

2

NotImplementedException anda muhtemelen Scala 2.10 için kabul ediliyor gibi görünüyor. Bu thread'a bakın.

+1

'tabii UnsupportedOperationException' Scala 2.10 düşünülen değildir. Uzun zamandır Java kütüphanesinin bir parçası olmuştur. İş parçacığı, Predef'e atanan bir conveniece yöntemi eklemektir. –

+1

İlk olarak, UnsupportedOperationException ve NotImplementedException, tamamen farklı şeyler anlamına gelir ve her ikisi de gereklidir (her ikisini de C# projelerinde aktif olarak kullanırdım). Ve soru bugün Scala 2.9.1'de ne kullanacak? Bir sınıfı tanımlamak için kullanırım ve daha sonra yöntem yöntemlerini uygulayarak, "yeni NotImplementedException()" ifadesini henüz uygulanmayan yöntemler gövdesi olarak kullanır ve her şeyi uygulamadan önce projeyi birçok kez derler. Ama Scala'da, bazı kukla verileri döndürerek tüm fonksiyonları yerine getirmem gerekiyor gibi görünüyor - bu, hatalara neden olabilir ve sadece can sıkıcıdır. – Ivan

+0

2.10'dan itibaren 'Predef''e' ??? 'eklenmiştir. Artık 'class Thing {def getThing = ??? } '. "GetThing" çağrısı, "bir uygulama eksik" iletisiyle "scala.NotImplementedError" öğesini yükseltecektir. – afternoon

2

sadece zaten Java var ne olursa olsun varsayılan kullanabilirsiniz. Scala, Java'daki standart istisnalara hiçbir şey eklemiyor.

İlgili konular