나의 개발일지(김지헌)
항해 99 76일차 12/03일 본문
오늘은 에러 쪽 코드를 바꾸고 , 토요일 날씨만 보여주는 api를 만들었다.
기존 코드
//Error interface
//에러 타입 추가
export interface Error {
name: string;
status?: number;
}
//에러 생성자
export interface ErrorConstructor {
new (message?: string): Error;
}
//시스템 에러
export interface SystemError {
status: number;
message: string;
}
//exceptions.ts
import { ErrorConstructor } from '../interface/Error';
//오류 선언해준다는 의미
declare let Error: ErrorConstructor;
//잘못된 매개변수 오류
export class InvalidParamsError extends Error {
//에러 메세지와 스테이터스를 생성함 데이터가 잘못 되었을때
constructor(message: string, status?: number) {
//생성한 메세지를 상속받아 사용
super(message); //상속 받은것은 꼭 써야함 .
this.status = status || 409; //파람스 에러 409
this.name = 'InvalidParamsError';
}
}
//유효성 검사 에러
export class ValidationErrors extends Error {
constructor(message: string, status?: number) {
super(message);
this.status = status || 412;
this.name = 'ValidationError';
}
}
//인증 에러
export class Unauthorized extends Error {
constructor(message: string, status?: number) {
super(message);
this.status = status || 401;
this.name = 'Unauthorized';
}
}
처음 작성된 코드는 내장된 Error의 인터페이스를 불러와서 상속을 받고 재선언 후 사용하고 있는데 너무 비효율 적이고 이미 내장된 코드를 한번더 만든다는것 자체가 좋지 않은 코드였다.(이유에는 2022버전을 사용해서 내장된 Error인터페이스가 다른것을 보고있는 문제)
개선된 코드
//Error interface.ts
//시스템 에러
export interface ErrorHandler extends Error {
status: number;
}
//exception.ts
//잘못된 매개변수 오류
export class InvalidParamsError extends Error{
public status:number
//에러 메세지와 스테이터스를 생성함 데이터가 잘못 되었을때
constructor(message: string, status?: number) {
//생성한 메세지를 상속받아 사용
super(message); //상속 받은것은 꼭 써야함 .
this.status = status || 409; //파람스 에러 409
this.name = 'InvalidParamsError';
}
}
//유효성 검사 에러
export class ValidationErrors extends Error {
public status:number
constructor(message: string, status?: number) {
super(message);
this.status = status || 412;
this.name = 'ValidationError';
}
}
//인증 에러
export class Unauthorized extends Error {
public status:number
constructor(message: string, status?: number) {
super(message);
this.status = status || 401;
this.name = 'Unauthorized';
}
}
tsconfig.json에서 2022버전을 지우고 es6나 2015 버전에 내장된 Error interface를 상속받아 없는 status를 추가해서 사용을 했다. 좀 더 깔끔한 코드가 작성된거 같다.
'항해 99' 카테고리의 다른 글
항해 99 78일차 12/05일 (0) | 2022.12.06 |
---|---|
항해 99 77일차 12/04일 (0) | 2022.12.05 |
항해 99 75일차 12/02일 (0) | 2022.12.03 |
항해 99 74일차 12/01일 (0) | 2022.12.02 |
항해 99 73일차 11/30일 (0) | 2022.11.30 |