現役エンジニアに悩みや疑問を30分間無料で質問し放題!

【Flutter×Dart】例外処理の使い方|try...catchでエラーを対処する

FlutterDart 例外処理

今回はDartにおける「例外処理」の使い方について解説します。

目次

例外処理の基本

try{
  処理...
}
catch(e){
  print(e); //エラー内容が出力
  処理...
}

Dartにおける例外処理の基本が上記の「try-catch文」です。

tryで実行した処理にエラーが発生した際に「スロー(throw)」され、catchで指定した処理が実行されます。catchの引数(e)でスローされたエラーを「キャッチ(catch)」できます。

finally

try{
  処理...
}
catch(e){
  処理...
}
finally{
  処理... //必ず実行される
}

finallyで指定した処理は、例外が発生してもしなくても必ず実行されます。

「try」 => 「on Exception catch (e)」

try{
  処理...
}
on Exception catch(e){
  処理...
}

「on」を使えば、指定した例外(Exception)に対してのみ例外処理を実行できます。

例)FirebaseAuthExceptionをキャッチ

onPressed: () async {
  try {
    await _auth.createUserWithEmailAndPassword(email: email, password: password);
  } 
  on FirebaseAuthException catch (e) {
    print(e);
  }
}

上記のコードでは「FirebaseAuthException」からスローされる可能性があるエラーのみをキャッチしています。

「e.code」でスローされたエラーコードをを取得できる

onPressed: () async {
  try {
    final newUser = await _auth.createUserWithEmailAndPassword(email: email, password: password);
  } on FirebaseAuthException catch (e) {
    if (e.code == 'email-already-in-use') {
      print('指定したメールアドレスは登録済みです');
    } else if (e.code == 'invalid-email') {
      print('メールアドレスのフォーマットが正しくありません');
    } else if (e.code == 'operation-not-allowed') {
      print('指定したメールアドレス・パスワードは現在使用できません');
    } else if (e.code == 'weak-password') {
      print('パスワードは6文字以上にしてください');
    }
  }
}

「on」で例外(Exception)を指定しておけば「e.code」でスローされた「エラーコード」を取得し、エラー別に実行する処理を指定できます。

Exceptionによってスローされる可能性があるエラーコードはドキュメントから確認できます。今回の場合は「createUserWithEmailAndPasswordメソッド」を実行した際にスローされる可能性があるエラーを「e.code」で取得しています。

以上です。

参考

  • URLをコピーしました!
目次
閉じる