throw、try、catch
失敗を検知して対応する
「throw、try、catch」はCoddyKit上の無料Dart Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDart Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Dart Academyコースには全4レッスンが含まれています。
問題が発生したとき
プログラムでは、不正な入力、見つからないファイル、計算エラーなどの問題が発生します。Dartは問題を黙って無視せず、例外として通知します。🚨
例外を投げる
throwを使うと、自分で問題を通知できます。問題が発生した場所で通常の処理を止め、ハンドラーに制御を渡します。
throw Exception('Something failed');何でも投げられる
Dartでは、Stringを含むほぼあらゆるオブジェクトをthrowできます。実際には、ハンドラーをわかりやすくするため、ExceptionやErrorのオブジェクトを投げます。
throw FormatException('Bad number');危険なコードを保護する
失敗する可能性のあるコードは、tryブロック内に記述します。Dartは通常どおり実行しながら、throwが発生した場合に対応できるよう待機します。
try {
risky();
}問題を捕捉する
catchブロックは、tryブロックでthrowが発生した場合にだけ実行されます。投げられたオブジェクトを受け取り、内容を確認して対応できます。
try {
risky();
} catch (e) {
print('Caught: $e');
}処理は先へジャンプする
throwが実行されると、残りのtryブロックは直ちにスキップされます。Dartは対応するcatchブロックへ直接移ります。
エラーオブジェクトを読む
catch (e)の変数には、投げられた値がそのまま格納されます。通常は、何が問題だったのかを説明する役立つメッセージを表示できます。
catch (e) {
print(e);
}スタックトレースを取得する
catchに2つ目の変数を追加すると、スタックトレースを取得できます。失敗に至った呼び出し経路がわかるため、デバッグしやすくなります。
catch (e, stack) {
print(stack);
}クラッシュではなく復旧する
例外を捕捉する目的は復旧です。クラッシュさせる代わりに、ログを記録したり、再試行したり、ユーザーに代替の案内を表示したりできます。
捕捉されないとクラッシュする
投げられた例外を捕捉する処理がなければ、例外は上位へ伝播し、コンソールにエラーが表示されてプログラムがクラッシュします。
完全な例
これが一連の完全なパターンです。try内でthrowし、それを捕捉して適切に処理することで、その後も実行を続けられます。
try {
throw Exception('Oops');
} catch (e) {
print('Handled: $e');
}理解度チェック
投げられた例外に実際に対応するのは、どのブロックですか?
まとめ
これで、throwで問題を通知し、tryで危険なコードを保護し、catchで復旧する方法を学びました。この3つの組み合わせで、プログラムを動かし続けられます。🎉
よくある質問
「throw、try、catch」レッスンは無料ですか?
はい。「throw、try、catch」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Dart Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Dart Academyコースには全4レッスンが含まれています。
「throw、try、catch」で何を学びますか?
失敗を検知して対応する ブラウザで直接実行するハンズオンコードでDart Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Dart Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDart Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「throw、try、catch」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDart Academyレッスンでコードを書いて実行できますか?
はい。すべてのDart Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- throw、try、catch
- on句と例外型
- finallyと確実なクリーンアップ
- カスタム例外とrethrow