[Flutter×Firebase] firebase_authのエラーハンドリング(例外処理、try-catch)を学ぶ

17349 ワード

記事の内容

アプリを作っていると、必要な時に応じてエラーを返したいと思うことありますよね。
「状況に応じてDialogにて、エラーハンドリングを表示させる」記事になります。

エラーハンドリング(例外処理)とは

プログラムの処理中に処理が妨げられる事象が発生した際、その処理をエラーとして対処する処理のことである。 例外処理とも呼ばれる。

今回使う、例外処理の基本(try-catch)

    try{
      ログインする
    }
    catch(e){
      print(e); //エラー内容が出力
      //出力例) パスワードが間違っています
    }

Dartの例外処理の基本が上記のtry-catch文です。
tryで実行された処理にエラーが発生した際に、catchで指定した処理が実行されます。
引数のeでtryが失敗したときのエラーを受け取ることができます。

新規登録画面 エラーハンドリング

新規登録画面 コード

ElevatedButton(
              onPressed: () async {
                startLoading();
                try {
                  await signUp();
                } on FirebaseAuthException catch (e) {
                  if (e.code == 'email-already-in-use') {
                    _emailAlreadyInUseDialog(context);
                  }
		  if (e.code == 'weak-password') {
                    _weakPasswordDialog(context);
                  }
                }
              },
              child: Text(
                '登録',
                style: TextStyle(fontWeight: FontWeight.bold),
              ),
            ),

コード解説

on FirebaseAuthExceptionを指定すると、e.codeで発生したエラーコードを取得でき、
エラー別に実行する処理を指定できます。
FirebaseAuthExceptionによって起こる可能性があるエラーコードはfirebase_authのドキュメントから確認できます。

メソッド

  • email-already-in-use:
    • メールアドレスが有効でない場合にスローされます。
  • invalid-email:
    • 指定されたメールアドレスを持つアカウントが既に存在する場合にスローされます。
  • operation-not-allowed:
    • email/password アカウントが有効でない場合にスローされます。Firebase コンソールの Auth タブで、メール/パスワード アカウントを有効にしてください。
  • weak-password:
    • パスワードが十分に強くない場合に投げられる。

新規登録処理のe.codeは公式ドキュメントに記載されております。