異常
Dart 代碼可以拋出和捕獲異常。
異常表示一些未知的錯誤情況。
如果異常沒有被捕獲, 則異常會拋出, 導致拋出異常的代碼終止執行。
和 Java 有所不同, Dart 中的所有異常是非檢查異常。 方法不會聲明它們拋出的異常, 也不要求捕獲任何異常。
Dart 提供了 Exception 和 Error 類型, 以及一些子類型。 當然也可以定義自己的異常類型。 但是,此外 Dart 程序可以拋出任何非 null 對象, 不僅限 Exception 和 Error 對象。
throw
-
拋出異常
-
throw FormatException('Invalid radix-10 number ');
-
-
也可以拋出任意類型對象
-
throw new Person(name:"jack");
-
try on catch
-
捕獲異常可以避免異常繼續傳遞(除非重新拋出( rethrow )異常)。 可以通過捕獲異常的機會來處理該異常:
-
try { doubleToInt(); } on FormatException { // 具體異常指定具體操作 print("FormatException"); }
-
-
通過指定多個 catch 語句,可以處理可能拋出多種類型異常的代碼。 第一個匹配拋出對象類型的catch子句將會處理這個異常。如果catch子句未說明所捕獲的異常類型,這個子句就可處理任何被拋出的對象。
-
try { doubleToInt(); } on FormatException { // 具體異常指定具體操作 print("FormatException"); } catch (e) { // 所有異常捕獲 print(e); } finally { print(double.parse("3.14").toString() + " ->finally"); }
-
finally
- 不管是否拋出異常,
finally
中的代碼都會被執行