0Pricing
Dart Academy · レッスン

finallyと確実なクリーンアップ

例外が発生してもしなくてもコードを実行する

「finallyと確実なクリーンアップ」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。

クリーンアップは必ず実行する

コードが失敗しても、開いたファイルや接続は閉じなければなりません。Dartでは、必ず実行されるクリーンアップにfinallyを使います。🧹

finallyブロック

finallyブロックは、どのような結果でもtryとcatchの後に実行されます。成功した場合も失敗した場合も、そのコードは必ず実行されます。

try {
  work();
} finally {
  cleanup();
}

成功後に実行される処理

tryブロックがエラーなしで完了すると、Dartはその直後にfinallyを実行してから先へ進みます。

catch後に実行される処理

例外が捕捉されると、catchブロックが実行され、その後にfinallyも実行されます。両方ともこの順序で実行されます。

try {
  fail();
} catch (e) {
  log(e);
} finally {
  close();
}

catchがなくても実行される処理

finallyだけを付けて、catchなしでtryを使うこともできます。例外はそのまま伝播しますが、外へ抜ける前にクリーンアップが実行されます。

try {
  risky();
} finally {
  release();
}

重複して書くだけではいけない理由

finallyがなければ、成功時とエラー時の両方の経路にクリーンアップ処理をコピーする必要があります。finallyブロックを1つにまとめれば、処理を1か所に置けます。

再スロー前のクリーンアップ

例外が捕捉されないまま上へ伝播し続ける場合でも、先にfinallyが実行されるため、リソースがリークすることはありません。

ファイルを安全に閉じる

典型的な使い方は、tryでリソースを開いて使用し、その読み取りが成功したかどうかに関係なくfinallyで閉じる方法です。

try {
  file.read();
} finally {
  file.close();
}

finallyでのreturnを避ける

finally内のreturnは、それより前のreturnや例外を上書きします。finallyはクリーンアップだけに使い、制御フローには使わないでください。

実行順序

順序を覚えておきましょう。tryが実行され、必要ならcatchが実行され、最後にfinallyが実行されます。クリーンアップによってブロックの処理が必ず完了します。

try-catch-finallyの完全な形

これは3つすべてを組み合わせたものです。保護された処理、エラー処理、そして最後に必ず実行されるfinallyでのクリーンアップを含みます。

try {
  open();
} catch (e) {
  print(e);
} finally {
  close();
}

確認問題

finallyブロックはいつ実行されますか?

まとめ

これで、成功時、捕捉されたエラー時、捕捉されないthrow時のどの経路でも必ず実行されるクリーンアップにfinallyを使えるようになりました。リークも防げます。🔒

よくある質問

「finallyと確実なクリーンアップ」レッスンは無料ですか?

はい。「finallyと確実なクリーンアップ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。

「finallyと確実なクリーンアップ」で何を学びますか?

例外が発生してもしなくてもコードを実行する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Dart Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「finallyと確実なクリーンアップ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDart Academyレッスンでコードを書いて実行できますか?

はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. throw、try、catch
  2. on句と例外型
  3. finallyと確実なクリーンアップ
  4. カスタム例外とrethrow
← Dart Academyに戻る