더북(TheBook)

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);
  }
};

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

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

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

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

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

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

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