TypeScript에서 사용자 정의 오류 발생

이상 주위에 대해 잘 모르기 때문에 자바스크립트의 표준 오류와 TypeScript에서 사용자 정의의 이상을 어떻게 실현하는지 조사했습니다.

JavaScript 표준 오류 객체 정보


JavaScript의 표준 오류 객체 표는 다음과 같습니다.
오류 객체
설명
Error
실행 중 오류가 발생했을 때 던집니다.사용자정의 예외의 기본 객체로도 사용할 수 있습니다.
EvalError
전역 eval () 함수와 관련된 오류를 표시합니다.이 이상을 JavaScript에서 더 이상 내보낼 수 없지만 EvalError 객체는 호환성을 위해 유지됩니다.
RangeError
그룹에 값이 없거나 허용된 범위 내에 값이 없을 때의 오류를 나타냅니다.
ReferenceError
존재하지 않는 변수를 인용했을 때의 오류를 나타냅니다.
SyntaxError
문법 오류를 설명하려는 코드의 오류를 나타냅니다.
TypeError
값이 예상 유형이 아닐 때의 오류를 나타냅니다.
URIError
전역 URI 처리 함수의 오류를 나타냅니다.
그렇게 정의했구나.죄송합니다. RangeError만 알고 있습니다.

TypeScript에서 사용자 정의 예외 발생


위의 표에서 API 통신 오류가 발생하면 적절한 오류를 찾을 수 없으므로 오류 객체가 사용됩니다.
오류 대상은 사용자 정의의 이상한 기초 객체로도 사용할 수 있습니다.
따라서 더 적당한 HttpRequestError 오류를 만들어 보자.
먼저 Error 객체ApplicationError를 상속하고 사용자정의 기본 객체를 작성합니다.
ApplicationError.ts
export default class ApplicationError extends Error {

  constructor(public message: string) {
    super(message);
    this.name = "ApplicationError";
  }
}
// 最初はErrorインタフェースを実装していたのですが、
// 後ほど使うSentry.captureExceptionでErrorを継承する必要があった
// export default class ApplicationError implements Error {
계승 ApplicationErrorHttpRequestError 을 생성합니다.
HttpRequestError.ts
import ApplicationError from "./ApplicationError";

export default class HttpRequestError extends ApplicationError {

  constructor(public message: string, public status: number) {
    super(message);
    this.name = "HttpRequestError";
    this.message = `${status}: ${message}`
  }
}

throw new HttpRequestError("管理者に連絡してください", 500)

표준 오류와 사용자 정의 오류에 따라 다른 작업을 수행합니다.


표준 오류와 사용자 정의 오류에 따라 오류 처리 프로그램에서 다른 작업을 수행합니다.( Vue 오류 처리기 정보 )
errorHandler.ts
Vue.config.errorHandler = (error, vm, info) => {
  // ApplicationErrorの場合はユーザーにアラートを表示し
  if (error instanceof ApplicationError) {
    alert(error.message);
    if (error.stack) {
      Sentry.captureException(error);
    }
  }
  // ビルトインのエラーについてはユーザーに表示せず、Sentryなどで開発者に通知する
  if (error instanceof Error) {
    if (error.stack) {
      Sentry.captureException(error);
    }
  }
};

마지막


JavaScript 예외 모범 사례를 찾을 수 없습니다.
자체 조사 결과는 이런 형식이어서 당분간 이 형식을 사용할 예정이다.
만약 잘못과 건의가 있으면 나에게 알려줄 수 있다면 나는 매우 기쁠 것이다.

좋은 웹페이지 즐겨찾기