Dart 異常

1、簡(jiǎn)介

Dart 代碼可以拋出異常和捕獲異常劳闹。異常表示一些未知的錯(cuò)誤情況院究。如果異常沒有被捕獲锣披,則異常會(huì)拋出纸俭,導(dǎo)致拋出異常的代碼終止執(zhí)行膀篮。
Dart 中的所有異常是非檢查異常增淹。方法不會(huì)聲明它們拋出的異常,也不要求捕獲任何異常裤翩。
Dart 提供了 Exception忘衍、Error 以及一些子類型蛹稍,也可以定義自己的異常類型位他。此外 Dart 程序可以拋出任何非 null 對(duì)象,不僅限 Exception 和 Error 對(duì)象产场。

2鹅髓、異常處理

1、throw
/// 拋出類型
throw FormatException('Expected at least 1 section’);
/// 拋出任意對(duì)象
throw 'Out of llamas!’;
2京景、catch

捕獲異沉耄可以避免異常繼續(xù)傳遞(除非重新拋出( rethrow )異常)∪丰悖可以通過捕獲異常的機(jī)會(huì)來處理該異常醒串。

示例一:
try {

} catch (e) {

}
示例二
try {
  
} on OutOfLlamasException {
  // 一個(gè)特殊的異常
} on Exception catch (e) {
  // 其他任何異常
} catch (e) {
  // 沒有指定的類型,處理所有異常
}

注:捕獲語句中可以同時(shí)使用 oncatch 鄙皇,也可以單獨(dú)分開使用芜赌。使用 on 來指定異常類型,使用 catch 來 捕獲異常對(duì)象伴逸。

示例三
try {
  // ···
} on Exception catch (e) {
  print('Exception details:\n $e');
} catch (e, s) {
  print('Exception details:\n $e');
  print('Stack trace:\n $s');
}

注:catch() 函數(shù)可以指定1到2個(gè)參數(shù)缠沈,第一個(gè)參數(shù)為拋出的異常對(duì)象,第二個(gè)為堆棧信息 ( 一個(gè) StackTrace 對(duì)象 )。

示例四
void misbehave() {
  try {
    dynamic foo = true;
    print(foo++); // Runtime error
  } catch (e) {
    print('misbehave() partially handled ${e.runtimeType}.');
    rethrow; // Allow callers to see the exception.
  }
}

void main() {
  try {
    misbehave();
  } catch (e) {
    print('main() finished handling ${e.runtimeType}.');
  }
}

注:如果僅需要部分處理異常洲愤,那么可以使用關(guān)鍵字 rethrow 將異常重新拋出颓芭。

3、finally

不管是否拋出異常柬赐,finally 中的代碼都會(huì)被執(zhí)行亡问。如果 catch 沒有匹配到異常,異常會(huì)在 finally 執(zhí)行完成后肛宋,再次被拋出州藕。

try {
  
} finally {
  //無論是否有異常,都會(huì)執(zhí)行
}
try{

}catch(e){

}finally{

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悼吱,一起剝皮案震驚了整個(gè)濱河市慎框,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌后添,老刑警劉巖笨枯,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異遇西,居然都是意外死亡馅精,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門粱檀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洲敢,“玉大人,你說我怎么就攤上這事茄蚯⊙古恚” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵渗常,是天一觀的道長(zhǎng)壮不。 經(jīng)常有香客問我,道長(zhǎng)皱碘,這世上最難降的妖魔是什么询一? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮癌椿,結(jié)果婚禮上健蕊,老公的妹妹穿的比我還像新娘。我一直安慰自己踢俄,他們只是感情好缩功,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著褪贵,像睡著了一般掂之。 火紅的嫁衣襯著肌膚如雪抗俄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天世舰,我揣著相機(jī)與錄音动雹,去河邊找鬼。 笑死跟压,一個(gè)胖子當(dāng)著我的面吹牛胰蝠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播震蒋,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼茸塞,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了查剖?” 一聲冷哼從身側(cè)響起钾虐,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎笋庄,沒想到半個(gè)月后效扫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡直砂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年菌仁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片静暂。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡济丘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出洽蛀,到底是詐尸還是另有隱情摹迷,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布郊供,位于F島的核電站泪掀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏颂碘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一椅挣、第九天 我趴在偏房一處隱蔽的房頂上張望头岔。 院中可真熱鬧,春花似錦鼠证、人聲如沸峡竣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽适掰。三九已至颂碧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間类浪,已是汗流浹背载城。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留费就,地道東北人诉瓦。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像力细,于是被迫代替她去往敵國(guó)和親睬澡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Dart異常與Java異常有哪些不同呢眠蚂? Dart的所有異常都是未經(jīng)檢查的異常煞聪。方法不聲明(沒throws)它們可...
    小烏龜爸閱讀 1,528評(píng)論 0 4
  • Dart 代碼可以拋出和捕獲異常。異常表示一些未知的錯(cuò)誤情況逝慧,如果異常沒有捕獲則會(huì)被拋出從而導(dǎo)致拋出異常的代碼終止...
    LouisXWB閱讀 110評(píng)論 0 0
  • Exceptions(異常) 相比較java的異常有一些區(qū)別 Dart 異常是非檢查異常昔脯。 方法不一定聲明了他們所...
    youseewhat閱讀 2,372評(píng)論 0 3
  • 異常 Dart代碼可以拋出并捕獲異常。如果未捕獲異常馋艺,則會(huì)引發(fā)程序終止 與Java相比栅干,Dart的所有異常都是未經(jīng)...
    芝麻醬的簡(jiǎn)書閱讀 505評(píng)論 0 4
  • 異常: dart會(huì)拋出并捕獲異常,如果沒捕獲異常,就會(huì)中斷程序運(yùn)行 Exception碱鳞、Error Throw 拋...
    哎呀啊噢閱讀 596評(píng)論 0 1