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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

06_Dart异常处理

發(fā)布時(shí)間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 06_Dart异常处理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

Exceptions

你的Dart代碼可以拋出和捕獲異常。異常是指程序執(zhí)行中發(fā)生的意料之外的錯(cuò)誤。如果沒有捕獲異常,引發(fā)異常的隔離程序?qū)⒈粧炱?#xff0c;通常隔離程序及其程序?qū)⒈唤K止。

與Java相反,Dart的所有異常都是未檢查的異常。方法不聲明它們可能拋出哪些異常,也不要求您捕獲任何異常。

Dart提供Exception和Error類型,以及許多預(yù)定義的子類型。當(dāng)然你可以自己定義異常。但是,Dart程序可以拋出任何非空對(duì)象不僅僅是異常和錯(cuò)誤對(duì)象。

Throw

這里有一個(gè)拋出或掛起異常的例子:

throw FormatException('Expected at least 1 section');

你也可以拋出任意對(duì)象:

throw 'Out of llamas!';

注意:在正式使用中通常拋出的是實(shí)現(xiàn)了Error或Exception類型的對(duì)象;

因?yàn)閽伋霎惓J且粋€(gè) 表達(dá)式 ,您可以在=>語句中拋出異常,也可以在任何允許表達(dá)式的地方拋出異常:

void distanceTo(Point other) => throw UnimplementedError();

Catch

捕獲異常將阻止異常傳播(除非重新拋出異常)。捕獲異常后我們可以去判斷并處理相應(yīng)的異常。

try {breedMoreLlamas(); } on OutOfLlamasException {buyMoreLlamas(); }

要處理可以拋出多種異常類型的代碼,可以指定多個(gè)catch子句。與拋出對(duì)象的類型匹配的第一個(gè)catch子句處理異常。如果catch子句沒有指定類型,則該子句可以處理任何類型的拋出對(duì)象:

try {breedMoreLlamas(); } on OutOfLlamasException {// A specific exceptionbuyMoreLlamas(); } on Exception catch (e) {// Anything else that is an exceptionprint('Unknown exception: $e'); } catch (e) {// No specified type, handles allprint('Something really unknown: $e'); }

正如前面的代碼所示,您可以使用on或catch或both。在需要指定異常類型時(shí)使用。當(dāng)您的異常處理程序需要異常對(duì)象時(shí),請(qǐng)使用catch。

可以指定catch()的一個(gè)或兩個(gè)參數(shù)。第一個(gè)是拋出的異常,第二個(gè)是堆棧跟蹤(StackTrace對(duì)象)。

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

要在捕獲中處理異常,同時(shí)允許其繼續(xù)傳播,請(qǐng)使用rethrow關(guān)鍵字。

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}.');} }

Finally

要確保在拋出異常時(shí)運(yùn)行某些業(yè)務(wù)代碼,請(qǐng)使用finally子句。如果沒有catch子句匹配異常,則在finally子句運(yùn)行后傳播異常:

try {breedMoreLlamas(); } finally {// Always clean up, even if an exception is thrown.cleanLlamaStalls(); }

finally子句在所有匹配到的catch子句之后運(yùn)行:

try {breedMoreLlamas(); } catch (e) {print('Error: $e'); // Handle the exception first. } finally {cleanLlamaStalls(); // Then clean up. }

轉(zhuǎn)載于:https://my.oschina.net/wecnlove/blog/3011214

總結(jié)

以上是生活随笔為你收集整理的06_Dart异常处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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