Spec-Zone.ru › Dart 2

dart:core

Класс Error

Объекты Error, выбрасываемые в случае сбоя программы.

Объект Error представляет собой сбой программы, которого программист должен был избежать.

Примеры включают вызов функции с некорректными аргументами или с неправильным количеством аргументов, или вызов ее в момент, когда это запрещено.

Это не ошибки, которые вызывающий код должен ожидать или перехватывать — если они возникают, программа содержит ошибку, и завершение программы может быть наилучшим ответом.

При принятии решения о том, что функция выбрасывает ошибку, условия, при которых это происходит, должны быть четко описаны, и они должны быть обнаруживаемы и предсказуемы, чтобы программист, использующий функцию, мог избежать возникновения ошибки.

В таких описаниях часто используются слова «должен» или «не должен» для описания условия, и если вы видите такие слова в документации функции, то нарушение требования, скорее всего, приведет к возникновению ошибки.

Пример (из String.contains):

`startIndex` must not be negative or greater than `length`.

В этом случае ошибка будет выброшена, если startIndex отрицательная или слишком большая.

Если условия невозможно обнаружить до вызова функции, вызываемая функция не должна выбрасывать Error. Она все еще может выбросить, но вызывающий код должен перехватить выброшенное значение, эффективно превращая его в альтернативный результат, а не ошибку. Выброшенный объект может выбрать реализацию Exception для документирования того, что он представляет собой исключительное, но не ошибочное, событие, но быть Exception не имеет никакого другого эффекта, кроме документации.

Все значения, отличные от null, могут быть выброшены в Dart. Объекты, расширяющие Error, обрабатываются специально: при первом выбросе трассировка стека в точке выброса записывается и хранится в объекте ошибки. Она может быть извлечена с помощью метода stackTrace. Объект ошибки, который просто реализует Error, и не расширяет его, не будет автоматически сохранять трассировку стека.

Объекты Error также используются для сбоев системы, таких как переполнение стека или ситуация с недостатком памяти.

Поскольку ошибки не создаются для перехвата, нет необходимости для подклассов различать ошибки. Вместо этого подклассы были созданы для того, чтобы облегчить создание групп связанных ошибок с согласованными сообщениями об ошибках. Например, метод String.contains будет использовать RangeError, если его startIndex не находится в диапазоне 0..length, что легко создается с помощью RangeError.range(startIndex, 0, length).

Реализующие
  • AbstractClassInstantiationError
  • ArgumentError
  • AssertionError
  • AsyncError
  • CastError
  • ConcurrentModificationError
  • CyclicInitializationError
  • FallThroughError
  • JsonUnsupportedObjectError
  • NoSuchMethodError
  • NullThrownError
  • OutOfMemoryError
  • RemoteError
  • StackOverflowError
  • StateError
  • TypeError
  • UnimplementedError
  • UnsupportedError

Конструкторы

Error()

Свойства

hashCode → int
только для чтения, унаследованное
Хеш-код этого объекта.
runtimeType → Type
только для чтения, унаследованное
Представление runtime-типа объекта.
stackTrace → StackTrace?
только для чтения
Трассировка стека в момент возникновения этой ошибки.

Методы

noSuchMethod(Invocation invocation) → dynamic
унаследованное
Вызывается при доступе к несуществующему методу или свойству.
toString() → String
унаследованное
Строковое представление этого объекта.

Операторы

operator ==(Object other) → bool
унаследованное
Оператор равенства.

Статические методы

safeToString(Object? object) → String
Безопасно преобразовать значение в строковое описание.
throwWithStackTrace(Object error, StackTrace stackTrace) → Never
@Since("2.16")
Выбрасывает error с ассоциированной трассировкой стека stackTrace.

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/Error-class.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API