当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Dart Error用法及代码示例

dart:core 库中Error 类的用法介绍如下。

在程序失败的情况下抛出的错误对象。

Error 对象表示程序员应该避免的程序故障。

示例包括使用无效参数调用函数,甚至使用错误数量的参数,或者在不允许的时候调用它。

这些不是调用者应该期望或捕获的错误 - 如果它们发生,则程序是错误的,终止程序可能是最安全的响应。

在决定一个函数抛出错误时,应该清楚地说明它发生的条件,并且它们应该是可检测和可预测的,因此使用该函数的程序员可以避免触发错误。

这样的说明经常使用"must"或"must not"这样的词来说明条件,如果你在函数的文档中看到这样的词,那么不满足要求很可能会导致抛出错误。

示例(来自 String.contains ):

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

在这种情况下,如果startIndex 为负数或太大,则会引发错误。

如果在调用函数之前无法检测到条件,则被调用函数不应抛出 Error 。它可能仍然会抛出,但调用者必须捕获抛出的值,从而有效地使其成为替代结果而不是错误。被抛出的对象可以选择实现Exception 来记录它代表一个异常但不是错误的事件,但是作为一个Exception 除了记录之外没有其他影响。

所有非 null 值都可以在 Dart 中抛出。扩展Error 的对象被特殊处理:它们第一次被抛出时,抛出点的堆栈跟踪被记录并存储在错误对象中。可以使用 stackTrace getter 检索它。仅实现 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

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 Error class。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。