Dart 05 異常

異常

Dart 代碼可以拋出和捕獲異常。

異常表示一些未知的錯誤情況。

如果異常沒有被捕獲, 則異常會拋出, 導致拋出異常的代碼終止執行。

和 Java 有所不同, Dart 中的所有異常是非檢查異常。 方法不會聲明它們拋出的異常, 也不要求捕獲任何異常。

Dart 提供了 ExceptionError 類型, 以及一些子類型。 當然也可以定義自己的異常類型。 但是,此外 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 中的代碼都會被執行
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章