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 Element.children用法及代碼示例
- Dart Element.tag用法及代碼示例
- Dart Element.querySelectorAll用法及代碼示例
- Dart Event.eventType用法及代碼示例
- Dart Enum.compareByIndex用法及代碼示例
- Dart EventStreamProvider.forTarget用法及代碼示例
- Dart Element.animate用法及代碼示例
- Dart Element.created用法及代碼示例
- Dart ElementList.classes用法及代碼示例
- Dart Events用法及代碼示例
- Dart EventStreamProvider.forElement用法及代碼示例
- Dart Element.querySelector用法及代碼示例
- Dart EnumName.name用法及代碼示例
- Dart Enum.compareByName用法及代碼示例
- Dart Element.insertAdjacentHtml用法及代碼示例
- Dart Element.dataset用法及代碼示例
- Dart Element.html用法及代碼示例
- Dart Element.classes用法及代碼示例
- Dart MapMixin.containsKey用法及代碼示例
- Dart Iterator用法及代碼示例
- Dart AttributeClassSet.intersection用法及代碼示例
- Dart num.sign用法及代碼示例
- Dart TransformList.last用法及代碼示例
- Dart FileList.first用法及代碼示例
- Dart CanvasRenderingContext2D.drawImageScaledFromSource用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 Error class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。