typescript로 java의 throws를 구현하기

YOUNGJOO-YOON·2022년 3월 7일
0

typeScript

목록 보기
61/65
{
  class PropertyRequiredError extends Error {
    property: string;
    constructor(property: string) {
      super("No property" + property);
      this.name = this.constructor.name;
      this.property = property;
    }
  }
  class ValidationError extends Error {
    constructor(message: string) {
      super(message);
      this.name = this.constructor.name;
    }
  }
  function readUser(json: string) {
    let user = JSON.parse(json);
    if (!user.age) {
      throw new PropertyRequiredError("age");
    }
    if (!user.name) {
      throw new PropertyRequiredError("name");
    }
    return true;
  }

  // 선언된 모든 error 처리를 해야만 compile이 통과된다.
  function parseSomething(): boolean | ValidationError | PropertyRequiredError {
    const data: string = '{"age":25}';
    try {
      return readUser(data);
    } catch (e) {
      if (e instanceof ValidationError) {
        console.error("name: " + e.name);
        console.error("message: " + e.message);
        console.error("stack: " + e.stack);
      }
      if (e instanceof PropertyRequiredError) {
        console.error("name: " + e.name);
        console.error("message: " + e.message);
        console.error("stack: " + e.stack);
      } else {
        throw e;
      }
      return false;
    }
  }

  parseSomething();
}
profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글