Обложка канала

Заметки про React

Короткие и полезные заметки про React

Заметки про React

4 года назад
Открыть в
Обработка ошибок с TypeScript Для долговечности работы проекта крайне важно отлавливать и обрабатывать ошибки. В TypeScript при обработке ошибки в try/catch тип ошибки всегда unknown:
try {
  // --snip--
} catch (error) {
  // error is unknown
}
Бывают случаи, когда мы хотим добиться более детального контроля при работе с ошибками. В этом случае мы должны определить тип ошибки. Для определения типа ошибки можно воспользоваться оператором instanceof. В TypeScript при использовании instanceof мы сужаем тип у переменной с неизвестного до определенного и далее можем с ним взаимодействовать. В JavaScript много стандартных типов ошибок, например: ReferenceError, TypeError, SyntaxError. Также можно создавать свои собственные – пользовательские типы ошибок. При создании пользовательского типа ошибки расширяйтесь от стандартного класса Error, чтобы к ошибке прикреплялся стектрейс. Использование пользовательских ошибок позволяет более детально обрабатывать каждую ошибку и по разному реагировать на нее приложению. Пример:
export class ProjectError extends Error {
  name: ErrorName;
  message: string;
  cause: any;

  constructor({
    name, message, cause
  }: {
    name: ErrorName;
    message: string;
    cause?: any
  }) {
    super();
    this.name = name;
    this.message = message;
    this.cause = cause;
  }
}

try {
  throw new ProjectError({
    name: "CREATE_PROJECT_ERROR",
    message: "API Error"
  });
} catch (error) {
  if (error instanceof ProjectError) {
    if (error.name === "CREATE_PROJECT_ERROR") {
      toast(error.message);
    }
  }
}
engineering.udacity.com/handlin…14ad4991
Handling errors like a pro in TypeScript

Error handling is crucial to the longevity of any project. Learn the design pattern I use to handle errors and write cleaner code.

Medium