Что такое стандартные исключения Scala?

#exception #scala #notimplementedexception

#исключение #scala #notimplementedexception

Вопрос:

Каковы общие стандартные исключения в Scala? Меня особенно интересует, как это . NotImplementedException Вызван эквивалент Net?

ОБНОВЛЕНИЕ: ответ о NotImplementedException , кажется, org.apache.commons.lang.NotImplementedException

Ответ №1:

Почти ничего:

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

Остальное происходит из Java, которые охватывают практически все уголки. Возникает вопрос о том, что эти методы Scala используют на других платформах, не так ли?

Комментарии:

1. Это дает довольно четкое представление о том, насколько легко создавать собственные пользовательские исключения и даже ошибки, если это работает с Java. Просто создайте однострочный класс в объекте и используйте по мере необходимости. последний класс MyException(arg:String) расширяет RuntimeException() или, как показано в FatalError, с java.lang.RuntimeException(msg). Хороший собрал.

Ответ №2:

В NotImplementedException настоящее время рассматривается, вероятно, для Scala 2.10. Посмотрите этот поток.

Комментарии:

1. UnsupportedOperationException конечно, это не рассматривается для Scala 2.10. Он долгое время был частью библиотеки Java. Речь идет о добавлении удобного метода, который выдает его в Predef.

2. Прежде всего, UnsupportedOperationException и NotImplementedException означают совершенно разные вещи, и оба они необходимы (я активно использовал их оба в своих проектах на C #). И вопрос в том, что использовать сегодня, в Scala 2.9.1? Я использую, чтобы определить класс, а затем реализовать его метод за методом, используя «throw new NotImplementedException ()» как еще не реализованные тела методов и много раз компилирую проект, прежде чем все реализовать. Но в Scala кажется, что я должен реализовать все функции, возвращая некоторые фиктивные данные — это может вызвать ошибки и просто раздражает.

3. Начиная с 2.10, ??? было добавлено в Predef . Теперь вы можете писать код, подобный class Thing { def getThing = ??? } . Вызов getThing вызовет scala.NotImplementedError сообщение «отсутствует реализация».

Ответ №3:

Вы можете просто использовать любое значение по умолчанию, которое уже существует в Java. Scala на самом деле ничего не добавляет к стандартным исключениям в Java.