Класс Error
Объекты Error, выбрасываемые в случае сбоя программы.
Объект Error представляет собой сбой программы, которого программист должен был избежать.
Примеры включают вызов функции с недопустимыми аргументами или даже с неправильным количеством аргументов, или вызов её в момент, когда это запрещено.
Это не ошибки, которые вызывающий должен ожидать или перехватывать — если они возникают, программа содержит ошибку, и завершение программы может быть самым безопасным ответом.
При принятии решения о том, что функция выбрасывает ошибку, условия, в которых это происходит, должны быть чётко описаны, и они должны быть обнаруживаемы и предсказуемы, чтобы программист, использующий функцию, мог избежать запуска ошибки.
В таких описаниях часто используются слова «должен» или «не должен» для описания условия, и если вы видите такие слова в документации функции, то невыполнение требования, скорее всего, приведёт к выбросу ошибки.
Пример (из String.contains):
`startIndex` must not be negative or greater than `length`.
В этом случае ошибка будет выброшена, если startIndex имеет отрицательное или слишком большое значение.
Если условия не могут быть обнаружены перед вызовом функции, вызываемая функция не должна выбрасывать Error. Она может всё ещё выбросить значение, но вызывающий должен будет перехватить выброшенное значение, фактически превращая его в альтернативный результат, а не в ошибку. Выброшенный объект может выбрать реализацию Exception, чтобы документировать, что он представляет собой исключительное, но не ошибочное, событие, но это не имеет никакого другого эффекта, кроме документации.
Все значения, кроме null , могут быть выброшены в Dart. Объекты, расширяющие Error , обрабатываются особым образом: в первый раз при их выбросе трассировка стека в точке выброса записывается и хранится в объекте ошибки. Она может быть получена с помощью геттера stackTrace. Объект ошибки, который просто реализует Error, а не расширяет его, не будет автоматически сохранять трассировку стека.
Объекты Error также используются для системных сбоев, таких как переполнение стека или ситуация с недостатком памяти.
Поскольку ошибки не созданы для перехвата, нет необходимости для подклассов различать ошибки. Вместо этого подклассы были созданы для того, чтобы упростить создание групп связанных ошибок с согласованными сообщениями об ошибках. Например, метод String.contains будет использовать RangeError, если его startIndex не находится в диапазоне 0..length, что легко создаётся с помощью new RangeError.range(startIndex, 0, length).
- Реализуется
- AbstractClassInstantiationError
- ArgumentError
- AssertionError
- AsyncError
- CastError
- ConcurrentModificationError
- CyclicInitializationError
- FallThroughError
- JsonUnsupportedObjectError
- NoSuchMethodError
- NullThrownError
- OutOfMemoryError
- RemoteError
- StackOverflowError
- StateError
- UnimplementedError
- UnsupportedError
Статические методы
- safeToString(
Object object) → String -
Безопасное преобразование значения в описание типа String.
Конструкторы
- Error()
Свойства экземпляров
- stackTrace → StackTrace только для чтения
- hashCode → int только для чтения, унаследованное
-
Хеш-код этого объекта.
- runtimeType → Type только для чтения, унаследованное
-
Представление типа объекта во время выполнения.
Операторы
- operator ==(
other) → bool унаследованное -
Оператор равенства.
Методы экземпляров
- noSuchMethod(
Invocation invocation) → dynamic унаследованное -
Вызывается при доступе к несуществующему методу или свойству.
- toString(
) → String унаследованное -
Возвращает строковое представление этого объекта.
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-core/Error-class.html