Обработка ошибок в TypeScript

Обработка ошибок в TypeScript

В этой статье объясняется обработка ошибок в TypeScript.

YouTube Video

Обработка ошибок в TypeScript

Обработка ошибок в TypeScript в основном выполняется с использованием конструкции try...catch, так же как и в JavaScript. В TypeScript можно более четко управлять содержимым ошибок с помощью вывода типов. Это позволяет выполнять более точную и читаемую обработку ошибок.

Синтаксис try...catch

Базовый синтаксис обработки ошибок следующий:.

 1try {
 2    // Code that may throw an error
 3    throw new Error("Something went wrong!");
 4} catch (error) {
 5    // Catch and handle the error
 6    console.error("Error:", error);
 7} finally {
 8    // Code that runs regardless of whether an error occurred
 9    console.log("Finally block executed.");
10}

Типобезопасная обработка ошибок

В TypeScript ошибки, пойманные блоком catch, рассматриваются как тип any, но рекомендуется указывать соответствующий тип для более безопасной обработки ошибок. Например, вы можете определить и использовать пользовательский тип ошибки следующим образом:.

 1class CustomError extends Error {
 2    constructor(message: string, public errorCode: number) {
 3        super(message);
 4        this.name = "CustomError";
 5    }
 6}
 7
 8try {
 9    throw new CustomError("Invalid operation", 400);
10} catch (error) {
11    if (error instanceof CustomError) {
12        console.error(`Error: ${error.message}, Code: ${error.errorCode}`);
13    } else {
14        console.error("Unknown error occurred");
15    }
16}

В этом примере создаётся класс с именем CustomError, и выбрасывается ошибка с пользовательскими свойствами, такими как errorCode. В блоке catch используйте instanceof, чтобы определить тип ошибки и выполнить соответствующую обработку.

Асинхронная обработка ошибок

В TypeScript конструкция try...catch также используется для обработки ошибок при использовании асинхронных функций.

 1async function fetchData() {
 2    try {
 3        const response = await fetch("https://api.example.com/data");
 4        if (!response.ok) {
 5            throw new Error(`HTTP error! status: ${response.status}`);
 6        }
 7        const data = await response.json();
 8        console.log(data);
 9    } catch (error) {
10        console.error("Failed to fetch data:", error);
11    }
12}
13
14fetchData();

В этом примере данные извлекаются с помощью fetch, и проверяется response.ok, чтобы выбросить ошибку, если код состояния не в порядке. Ошибка перехватывается в блоке catch, и выводится соответствующий лог.

Резюме

В TypeScript использование типов для уточнения содержания ошибок делает обработку ошибок более безопасной и читаемой. При обработке ошибок важно уточнить, какие типы ошибок могут возникнуть, и обрабатывать их соответствующим образом.

Ошибка

Класс Error в TypeScript расширяет класс Error в JavaScript и представляет собой базовый объект для представления ошибок. С помощью класса Error вы можете создавать объект, содержащий сообщение об ошибке, и выполнять обработку ошибок.

Основы класса Error

Класс Error используется следующим образом.

1const error = new Error("Something went wrong!");
2console.log(error.message); // "Something went wrong!"
3console.log(error.name);    // "Error"

Свойства

Класс Error имеет следующие свойства:.

  • message Строка, представляющая сообщение об ошибке.
  • name Имя ошибки. По умолчанию это "Error", но его можно изменить, создав пользовательский класс ошибки.
  • stack Информация о трассировке стека, используемая для отладки. Строка, указывающая, какой код вызвал ошибку в момент её возникновения.

Пользовательский класс ошибки

Также возможно расширить класс Error и создавать собственные классы ошибок. Это полезно в ситуациях, когда требуется конкретная обработка ошибок. Например, это эффективно, когда вы хотите обрабатывать различные типы ошибок, такие как ошибки HTTP-запросов или ошибки базы данных.

Пример создания пользовательской ошибки

 1class CustomError extends Error {
 2    constructor(message: string, public errorCode: number) {
 3        super(message); // Call the constructor of the parent class 'Error'
 4        this.name = "CustomError"; // Set the name of the error
 5    }
 6}
 7
 8const customError = new CustomError("Invalid operation", 400);
 9console.log(customError.message);   // "Invalid operation"
10console.log(customError.name);      // "CustomError"
11console.log(customError.errorCode); // 400
  • Создав класс CustomError и добавив информацию, такую как коды ошибок, вы можете управлять более полной информацией об ошибках.

Наследование класса Error

В TypeScript при создании пользовательского класса ошибки, расширяющего класс Error, есть несколько моментов, на которые следует обратить внимание.

  1. Вызов super() В конструкторе пользовательского класса ошибок необходимо вызвать super(), чтобы вызвать конструктор класса Error. Это гарантирует, что свойства message и stack будут корректно инициализированы.

  2. Добавление свойств Если вы хотите добавить дополнительную информацию в объект ошибки, определите новые свойства внутри класса. Например, в вышеуказанном CustomError добавлено свойство errorCode.

Генерация и обработка ошибок

Вы можете обрабатывать ошибки, выбрасывая их с помощью класса Error или пользовательского класса ошибок, а затем перехватывая их.

 1function riskyOperation() {
 2    throw new Error("Something went wrong during the operation");
 3}
 4
 5try {
 6    riskyOperation();
 7} catch (error) {
 8    if (error instanceof Error) {
 9        console.error(error.message);  // "Something went wrong during the operation"
10        console.error(error.name);     // "Error"
11    }
12}

В случае пользовательских ошибок также используйте instanceof, чтобы идентифицировать конкретные ошибки и обрабатывать их соответствующим образом.

 1class CustomError extends Error {
 2    constructor(message: string, public errorCode: number) {
 3        super(message);
 4        this.name = "CustomError";
 5    }
 6}
 7
 8try {
 9    throw new CustomError("Database connection failed", 500);
10} catch (error) {
11    if (error instanceof CustomError) {
12        console.error(`Error: ${error.message}, Code: ${error.errorCode}`);
13    }
14}

Резюме

Класс Error в TypeScript является базовым классом для выполнения стандартной обработки ошибок. Кроме того, расширяя класс Error для создания пользовательских ошибок, становится возможной гибкая обработка ошибок на основе их типов и дополнительной информации.

Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.

YouTube Video