異常是表示發生了意外的錯誤,若是沒有捕獲異常,引起異常的隔離程序將被掛起,而且程序將被終止;html
Dart代碼能夠拋出並捕獲異常,但與java相反,Dart的全部異常都是未檢查的異常,方法不聲明它們可能拋出哪些異常,也不須要捕獲任何異常;java
Dart提供了異常和錯誤類型以及許多預約義的子類型,固然,也能夠定義本身的異常,然而,Dart成語能夠拋出任何非空對象;學習
下面是一個拋出或引起異常的例子:spa
throw FormatException('拋出一個FormatException異常'); //你也能夠拋出任意對象 throw '數據非法!';
你能夠指定一個或兩個參數來捕獲異常(catch),第一個是拋出的異常,第二個是堆棧跟蹤(StackTrace對象)。以下面代碼所示:code
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子句,若是沒有catch子句匹配異常,則異常在finally子句運行後傳播,以下面代碼所示,在最下面加上了finally語句:orm
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); }
Dart學習系列文章:https://www.cnblogs.com/jukaiit/category/1636484.html