>웹 프론트엔드 >JS 튜토리얼 >TypeScript에서 Async/Await Try...Catch 블록의 오류를 가장 잘 처리하는 방법은 무엇입니까?

TypeScript에서 Async/Await Try...Catch 블록의 오류를 가장 잘 처리하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-07 02:13:16961검색

How to Best Handle Errors in Async/Await Try...Catch Blocks in TypeScript?

Async/Await를 사용하여 Try...Catch Blocks에 대한 올바른 구문

TypeScript에서 편리한 Async/Await 기능을 사용할 때 문제가 발생합니다. 응답을 기다릴 때 변수 선언과 관련하여 발생합니다. 전통적으로 아래와 같이 나중에 사용하려면 try...catch 블록 외부에서 선언해야 합니다.

let createdUser;
try {
    createdUser = await this.User.create(userInfo);
} catch (error) {
    console.error(error);
}

console.log(createdUser);

try 블록 내에 비즈니스 로직을 배치하지 않는 것이 가장 좋습니다. . 그러나 권장되는 접근 방식을 사용하려면 블록 외부에서 기다리고 있는 변수를 선언해야 하므로 번거로울 수 있습니다.

오류 처리 모범 사례

실제로 다음을 수행하는 것이 모범 사례로 간주됩니다. 값에서 발생하는 모든 예외가 포착되도록 하기 위해 try 본문 내에 여러 줄의 비즈니스 논리를 배치하지 마십시오. 보다 포괄적인 접근 방식은 다음과 같습니다.

try {
    const createdUser = await this.User.create(userInfo);

    console.log(createdUser);
    // Business logic goes here
} catch (error) {
    console.error(error); // Exception from creation or business logic
}

선택적 오류 처리를 위한 대안

다음에서 발생하는 오류만 포착하고 처리하려는 경우 세 가지 대안이 있습니다. promise:

  1. 외부에 변수를 선언하고 분기: 여기에는 아래와 같이 예외 발생 여부에 따른 분기가 포함됩니다.
let createdUser; // Or use 'var' inside the block
try {
    createdUser = await this.User.create(userInfo);
} catch (error) {
    console.error(error); // Exception from creation
}

if (createdUser) { // User was created successfully
    console.log(createdUser);
    // Business logic goes here
}
  1. 예외 유형 테스트: 다음에 대해 발견된 예외를 테스트합니다. 특정 유형을 선택하고 이를 처리하거나 다시 던집니다. 그에 따라:
try {
    const createdUser = await this.User.create(userInfo);

    console.log(createdUser);
    // Business logic goes here
} catch (error) {
    if (error instanceof CreationError) {
        console.error(error); // Exception from creation
    } else {
        throw error;
    }
}
  1. 콜백과 함께 then 사용: 이 접근 방식은 try/catch 대신 두 개의 콜백을 사용하여 가장 간단하고 권장되는 솔루션을 제공합니다.
await this.User.create(userInfo).then(createdUser => {
    // User was created successfully
    console.log(createdUser);
    // Business logic goes here
}, error => {
    console.error(error); // Exception from creation
});

위 내용은 TypeScript에서 Async/Await Try...Catch 블록의 오류를 가장 잘 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.