Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 스택
- RT scheduling
- cors
- 연결 리스트
- 프로그래머스
- pytorch
- 자료구조
- 코딩테스트
- 릿코드
- 이진탐색
- 해시테이블
- 브라우저
- 알고리즘
- vue3
- C
- 포인터
- 프론트엔드
- RxJS
- GraphQL
- alexnet
- 배열
- 컨테이너
- 타입스크립트
- 프로세스
- 큐
- APOLLO
- Machine Learning
- 연결리스트
- 웹팩
- 자바스크립트
Archives
- Today
- Total
프린세스 다이어리
센트리에 서버에러 제외하고 클라이언트 에러만 로그 보내는 법 본문
728x90
어떤 컴포넌트 내에서 서버에 데이터를 요청해서 응답을 받아오는 경우가 있다고 가정하자. 그리고 이 컴포넌트에서 에러가 발생하면 센트리에 에러로그를 보내는 상황이다. 여기에서 센트리에 api 에러인 것과 클라이언트 에러인 것을 구분해서 클라이언트 에러인 것만 로깅하기 위해서는 api 요청 함수 내에 ServerException을 하나 정의해서 에러를 throw 해주면 된다.
// exception.ts
export class ServerException extends Error {
constructor(msg: string) {
super(msg);
Object.setPrototypeOf(this, ServerException.prototype);
}
}
먼저 이렇게 에러를 extend하는 ServerException 클래스를 하나 만들어서 export 하고,
// api.ts
export async function getData(id: string): Promise<ResponseI> {
const path = `/sample/api/path/${id}`;
const response = await httpRequest.get(path);
if (response.data.code === 'FAIL') {
const msg = response.data.message || SERVICE_UNAVAILABLE_MESSAGE;
throw new ServerException(msg);
}
return response.data;
}
이렇게 서버에러가 났을 때 ServerException을 throw해주면 이 getData 함수를 쓰는 곳에서 에러를 ServerException인지 아닌지 판단할 수 있다.
// SamplePage.vue
async getReservationData() {
try {
const response = await getData(this.orderNumber);
// ...
} catch (e) {
console.error(e);
if (!(e instanceof ServerException)) {
Sentry.captureException(e);
}
}
},
서버 응답을 받는 데 실패하는 경우 instanceof으로 ServerException인지 판단한 후, 위와 같이 서버 응답이 아닌 경우에만 센트리에 로그를 찍으면 된다.
728x90
'FE' 카테고리의 다른 글
[Storybook] 스토리북 mdx 기본틀 잡기 (0) | 2022.01.28 |
---|---|
[Storybook] 스토리북에서 vue svg파일 import 하는법 (0) | 2022.01.27 |
테스트코드 눈에 잘 들어오게 리팩토링하기 (0) | 2022.01.25 |
자바스크립트 전화번호/휴대폰번호 정규표현식, 의미 설명 (0) | 2022.01.24 |
[Vue3] [Vue warn]: Invalid vnode type when creating vnode 해결방법 (0) | 2022.01.05 |
Comments