inflearn logo
강의

Course

Instructor

Svelte REST-API project

Implementing Authentication - Components

[인증 구현 - 컴포넌트] error 처리 관련 질문

Resolved

392

ggamsi04187932

12 asked

0

2분 12초

인증 컴포넌트를 테스트해보는 과정에서 질문이 생겼습니다.

만약 백엔드 서버가 작동하지 하고 있다면,

이메일/패스워드 입력 후 로그인 버튼을 클릭하면

auth 스토어의 login 메소드에서 에러가 발생합니다.

그럼 이때 try/cath로 인해 "오류가 발생했습니다. 로그인을 다시 시도해 주세요."라는 alert 문구를 띄우게 됩니다.

 

만약에 AuthLogin 컴포넌트에서 정의한 try/catch으로

alert를 보여주고 싶다면 Auth 스토어의 login 메소드에서 try/catch를 하지 않으면 되는데, 이는 좋은 방법같지 않은거 같습니다.

 

아니면 on:click 이벤트 정의 메소드에서는 try/cathc를 안해는게 나을까요? 

 

error를 catch 하는 것을 한 곳에서 관리(?)하여 에러 발생시 내가 원하는 동작(화면)을 보여주고 싶다면 어떻게 코드를 작성하는게 좋을까요?

rest-api svelte

Answer 1

1

Indie Coder

최종 컴포넌트에서 오류를 제어하길 원하신다면

우선 login 메소드의 try catch를 제거하는 것이 아니고 catch에서 다음과 throw를 이용해

오류를 다시 한번 넘겨주면 될 것 같습니다 .

const login = async(email, password) => {
		try {
      const options = {
        path: '/auth/login',
        data: {
          email: email,
          pwd: password,
        }
      }

      const result = await postApi(options)
      set(result)
      isRefresh.set(true)
      router.goto('/')
    }
    catch(error) {
      // alert('오류가 발생했습니다. 로그인을 다시시도해 주세요.')
      throw error
    }	
}

그리고 최종적으로 처리하길 원하는 위치에서 이 넘겨진 오류를 받아

원하는 액션을 주시면 될 것 같습니다.

 

이때 오류에 따른 처리의 경우 전달받은 error객체에서 message나 code 등 을 분석해

그에 맞는 동작을 하게 하는 함수를 만들어 처리하는 것도 좋을 것 같습니다.

 

참고로 디버그를 통해서 보면 서버로 부터 전달받는 error의 경우 다음과 같은 형태의 객체가됩니다.

AxiosError {message: 'Request failed with status code 500', name: 'AxiosError', code: 'ERR_BAD_RESPONSE', config: {…}, request: XMLHttpRequest, …}

0

ggamsi04187932

말씀해주신대로 depth가 있는 곳에서는 error 객체를 throw 해주고 최종적으로 전달받은 곳에서는 원하는 동작을 정의해주면 되겠네요!

늦은 시간임에도 불구하고 친절히 답변해주셔서 감사합니다 :)

스프링부트 서버 에러나요

0

17

1

DDD 는 마이바티스와 잘 맞지 않는건가요?

0

46

1

스프링부트 버전 문의드립니다.

0

38

1

Dto와 Entity 사용 관련 질문

0

31

2

강의 자료 코드

0

39

2

application.properties 작성 관련 질문

0

45

2

cascade 질문

0

39

1

관리자 페이지 상품 삭제 API

1

32

1

@types/bcrypt 설치과정이 누락된것같습니다.

0

48

1

process.env port key 에러

0

46

1

추상화

0

50

1

이미지 처리 라우트 관련 문의

0

67

2

지금 이게 맞는건지 문의드립니다.

0

44

1

프론트 api.js의 요청 headers 옵션의 cors 관련 설정 질문

0

61

2

[npm start 오류나는 분들을 위하여]노드 최신버전 사용하시면 오류가 발생합니다.

0

397

1

첫 메인 화면 $isLogin 인증 부분 궁금한점이 있습니다.

0

550

2

[앱 완성도 높이기3 - URL을 통한 보기모드 변경] 로그인 성공 후 라우팅 문제

0

311

1

[앱 완성도 높이기2 - 날짜보기] 타임존 관련 설정 문제

0

1556

1

[보기모드 변경 구현] 코멘트 리스트 조회 후 문제

0

448

2

[보기모드 변경 구현] 좋아요 보기 구현에서 문제 발견

0

423

1

[인증 구현 - store] setAuth 메소드 구현

0

355

1

[스토어 배치] 강의 내용 중 수정이 필요한 부분

0

344

1

[라우터 설정] 강의 내용 중 수정이 필요한 부분

0

576

1

아래와 같은 에러가 발생합니다. ㅜㅜ

0

1245

2