2011-10-12 65 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中的标准例外添加任何东西。