異常是表示發生了意外的錯誤,如果沒有捕獲異常,引發異常的隔離程式將被掛起,並且程式將被終止; Dart代碼可以拋出並捕獲異常,但與java相反,Dart的所有異常都是未檢查的異常,方法不聲明它們可能拋出哪些異常,也不需要捕獲任何異常; Dart提供了異常和錯誤類型以及許多預定義的子類型,當然,也... ...
如需轉載,請註明出處:Flutter學習筆記(7)--Dart異常處理
異常是表示發生了意外的錯誤,如果沒有捕獲異常,引發異常的隔離程式將被掛起,並且程式將被終止;
Dart代碼可以拋出並捕獲異常,但與java相反,Dart的所有異常都是未檢查的異常,方法不聲明它們可能拋出哪些異常,也不需要捕獲任何異常;
Dart提供了異常和錯誤類型以及許多預定義的子類型,當然,也可以定義自己的異常,然而,Dart成語可以拋出任何非空對象;
-
拋出異常
下麵是一個拋出或引發異常的例子:
throw FormatException('拋出一個FormatException異常'); //你也可以拋出任意對象 throw '數據非法!';
-
捕獲異常
你可以指定一個或兩個參數來捕獲異常(catch),第一個是拋出的異常,第二個是堆棧跟蹤(StackTrace對象)。如下麵代碼所示:
try{ //邏輯代碼操作 } on Exception catch (e){ print('exception details:\n $e'); }catch (e,s){ print('exception details:\n $e'); print('stack trace:\n $s'); } //上面的代碼第一個catch用來捕獲異常詳細信息,第二個catch是堆棧跟蹤信息
-
Finally
要確保某些代碼能夠運行,無論是否拋出異常,請使用finally子句,如果沒有catch子句匹配異常,則異常在finally子句運行後傳播,如下麵代碼所示,在最下麵加上了finally語句:
try{ //邏輯代碼操作 } on Exception catch (e){ print('exception details:\n $e'); }catch (e,s){ print('exception details:\n $e'); print('stack trace:\n $s'); }finally{ print(''Do sth); }
下一章節:Flutter學習筆記(8)--Dart面向對象