日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dart系列之:dart语言中的异常

發(fā)布時間:2024/2/28 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dart系列之:dart语言中的异常 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 簡介
  • Exception和Error
  • Throw和catch
  • Finally
  • 總結(jié)

簡介

Exception是程序中的異常情況,在JAVA中exception有checked Exception和unchecked Exception。那么在dart中的情況是不是一樣的呢?一起來看看吧。

Exception和Error

Dart中表示異常的類有兩個,分別是Exception和Error。他們兩個有什么區(qū)別呢?

Exception是由VM或者dart code中拋出的。

Exception主要用來表示用戶程序編寫過程中產(chǎn)生的異常,是可以定位到的可以解決的異常。通常來說Exception中包含了足夠的信息來方便用戶來定位異常點。

所以Exception通常是需要被catch的。但是和java不同的是,dart中所有的異常都是unchecked 異常,也就是說dart中的異常并不強制要求被捕獲,是否捕獲異常是由程序員自行決定的。

構(gòu)造一個異常很簡單,如下所示:

Exception("message")

但是dart并不推薦這樣使用,因為這樣構(gòu)造的異常太過通用了,即使捕獲到這樣的異常,可以獲得信息也比較少。所以dart推薦拋出自定義異常,也就是說根據(jù)業(yè)務(wù)需要去創(chuàng)建Exception對應(yīng)的類,然后根據(jù)業(yè)務(wù)需要進行拋出。

dart中也有很多Exception的子類,比如FormatException來表示各種不同的異常情形。

同樣的,在JAVA中也是這樣推薦的,不要直接拋出Exception,而是根據(jù)業(yè)務(wù)需要拋出自定義的異常。

和JAVA一樣,dart中的Error表示的是一個嚴重的錯誤,Error是應(yīng)該在程序編寫過程中需要避免的。

dart中的Error并不需要被捕獲,因為發(fā)生了Error就表示程序出現(xiàn)了非常嚴重的錯誤,已經(jīng)無法運行下去了。

所以Error是我們在程序編寫過程中需要避免的。

Throw和catch

如果程序產(chǎn)生了異常,則可以使用Throw語句將其拋出,然后在合適的地方使用catch進行捕獲。

比如我們throw一個格式異常:

throw FormatException('這是一個格式異常');

但是在dart中,不僅僅可以throw Exception或者Error,任何一個Object都可以throw出去,如下所示:

throw "這是一個異常!";

拋出的異常可以使用catch來捕獲:

try{do something }catch(e){}

dart也可以捕獲特定的異常,這種情況用on語句來表示,如下:

try {someException(); } on OutOfIndexException {// 捕獲特定的異常doSomething(); } on Exception catch (e) {// 捕獲其他的Exceptionprint('其他的異常: $e'); } catch (e) {// 處理剩下的異常print('剩下的異常: $e'); }

dart中的catch可以指定兩個參數(shù),第一個參數(shù)就是throw的異常,第二個參數(shù)是StackTrace對象:

try { } catch (e, s) {print('異常信息: $e');print('堆棧信息: $s'); }

在處理完異常之后,如果想要再將其拋出,可以使用rethrow:

void doSomething(){try{}catch (e) {print('get exception');rethrow; // rethrow這個異常} }

Finally

和JAVA一樣,dart中也有Finally,用來進行最終的處理。Finally會在所有的catch語句執(zhí)行完畢之后執(zhí)行:

try {doSomething(); } catch (e) {print('Error: $e'); } finally {cleanUpJob(); // 最后的清理工作 }

總結(jié)

以上就是dart中的異常和對異常的處理。

本文已收錄于 http://www.flydean.com/05-dart-exception/

最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發(fā)現(xiàn)!

歡迎關(guān)注我的公眾號:「程序那些事」,懂技術(shù),更懂你!

總結(jié)

以上是生活随笔為你收集整理的dart系列之:dart语言中的异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。