【Flutter/Dart】try-catch文/例外処理/使い方/基礎から実践

最終更新日

Dartの基本文であるtry-catch文について調べてまとめました。基礎から実践までサンプルがあります。動かない場合はコメントください。

動かすにはDartpadを使用してください。

try文とは

公式サイト

https://dart.dev/guides/language/language-tour#exceptions

try文は膨大な例外がある場合に使います。

そもそもが、例外(予期していなかった結果値が送られてくること)を想定してあらかじめ設定しておきます。

例外が発生したらon Exception catch(e)を表示するといったような使い方をします。

if文との違い

if文との違いは、try文を使うときが前章で説明したように「膨大な例外がある場合」に使用することです。

基本的に、tryを使うときは処理がうまくいったかどうかに使用します。

例えば、同期処理(async)を使用する場合です。これらの結果をいちいちif文で書くのは大変です。他にもデータベースへの接続の可否Firebaceへの接続の可否で使用します。

基本

try文には条件式がありません。なので、とりあえず、tryを試しプログラムに矛盾が生じる(例外が発生する)場合は、

on Exception catch(e)やFinall/throwが発生します。

on-catch

エラーが出たときに、実行する処理です。

on Exception catch (e) {}

公式サイト

https://dart.dev/guides/language/language-tour#catch

throw

例外が発生した場合に投げるエラー(表示するエラー)をあらかじめ決めておきます。

throw FormatException();

公式サイト

https://dart.dev/guides/language/language-tour#throw

finally

エラーが発生してもしなくても処理する内容を決めておきます。

finally {
//処理内容
}

公式サイト

https://dart.dev/guides/language/language-tour#finally

エラーを起こしてみる

main() {
  String? val;
  
  try {
    if (val!.length > 0) {
      print("0以上です");
    } else {
      print("0です");
    }
  } catch (e) {
    print('Errorが発生:$e\n');
    // Errorが発生:NoSuchMethodError: method not found: 'toString' on null
  }
}

実践

参考

https://firebase.flutter.dev/docs/auth/error-handling/

https://flutternyumon.com/how-to-use-exception/#%E4%BE%8B%E5%A4%96%E5%87%A6%E7%90%86%E3%81%AE%E5%9F%BA%E6%9C%AC

https://www.cresc.co.jp/tech/java/Google_Dart2/language/exceptions/exceptions.html

fem