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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- throw、try、catch
- on句と例外型
- finallyと確実なクリーンアップ
- カスタム例外とrethrow