0Pricing
Dart Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

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

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