8.2.6 오류 예외 처리하기

    로그인 또는 회원가입 과정에서 발생할 수 있는 오류에 예외 처리를 해주겠습니다. 만약 작업 처리에 실패한다면 catch 부분에서 e 객체의 code를 통해 어떤 에러인지 판별할 수 있습니다.

    어떤 code가 있는지는 다음 페이지에서 확인하세요.

    로그인: https://bit.ly/3lcSvnL

    회원가입: https://bit.ly/3eDh7n7

    이 중에서 흔히 발생할 수 있는 오류에 예외 처리를 해주고, 나머지는 기본 오류 메시지인 ‘로그인에 실패하였습니다.’ 또는 ‘가입 실패’라는 문구를 보여주도록 구현하겠습니다.

    onSubmit 함수를 다음과 같이 수정해주세요.

    screens/SignInScreen.js - onSubmit

    const onSubmit = async () => {
      Keyboard.dismiss();
    
      const {email, password, confirmPassword} = form;
    
      if (isSignUp && password !== confirmPassword) {
        Alert.alert('실패', '비밀번호가 일치하지 않습니다.');
        return;
      }
    
      setLoading(true);
      const info = {email, password};
    
      try {
        const {user} = isSignUp ? await signUp(info) : await signIn(info);
        console.log(user);
      } catch (e) {
        const messages = {
          'auth/email-already-in-use: '이미 가입된 이메일입니다.',
          'auth/wrong-password': '잘못된 비밀번호입니다.',
          'auth/user-not-found': '존재하지 않는 계정입니다.',
          'auth/invalid-email': '유효하지 않은 이메일 주소입니다.',
        };
        const msg = messages[e.code] || ${isSignUp ? '가입' : '로그인'} 실패;
        Alert.alert('실패', msg);
      } finally {
        setLoading(false);
      }
    };

    이제 다음 작업들을 수행했을 때 오류 메시지가 올바르게 나타나는지 확인해보세요.

    이미 가입한 이메일로 다시 회원가입 시도

    잘못된 비밀번호로 로그인 시도

    존재하지 않는 이메일로 로그인 시도

    잘못된 이메일(예: @가 없음)로 로그인 시도

    회원가입 시 비밀번호와 비밀번호 확인이 일치하지 않은 상태로 회원가입 시도

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.