當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。