2011-10-12 61 views

回答

7

幾乎沒有什麼:

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

,其餘來自於爪哇,涵蓋幾乎所有角落。它引出了這些Scala方法在其他平臺上的投入問題,不是嗎?

+0

這給出了一個相當公平的想法,即拋出自己的自定義異常是多麼容易,甚至如果它與Java一起工作則會出現錯誤。只需在對象中創建一行類並根據需要使用。 final類MyException(arg:String)擴展RuntimeException(),或者如在FatalError中使用java.lang.RuntimeException(msg)所看到的那樣。好的一個Sobral。 –

2

NotImplementedException目前正在考慮斯卡拉2.10,大概。看到這個thread

+1

'UnsupportedOperationException'當然沒有考慮Scala 2.10。很長一段時間它一直是Java庫的一部分。該線程是關於添加一個方法,將其引發到Predef。 –

+1

首先,UnsupportedOperationException和NotImplementedException意味着完全不同的東西,都需要(我曾經在我的C#項目中積極使用它們)。問題是今天在Scala 2.9.1中使用什麼?我用來定義一個類,然後使用「throw new NotImplementedException()」作爲尚未實現的方法體並在我實現所有內容之前多次編譯該項目,然後按方法逐個實現它。但在Scala中,似乎必須通過返回一些虛擬數據來實現所有功能 - 這可能會導致錯誤,並且只是令人討厭。 – Ivan

+0

從2.10開始,''''已被添加到'Predef'。你現在可以編寫像'class Thing {def getThing = ??? }'。調用'getThing'會出現'scala.NotImplementedError'消息「缺少一個實現」。 – afternoon

2

您可以使用Java中已存在的任何默認值。 Scala並沒有真正爲Java中的標準例外添加任何東西。