타입스크립트에서 비동기 작업을 수행할 때, 예외 처리는 매우 중요합니다. 프로미스나 async/await와 같은 비동기 패턴을 사용할 때 예외를 적절하게 처리하지 않으면 애플리케이션에서 예기치 않은 동작이 발생할 수 있습니다. 이 글에서는 타입스크립트에서 비동기 작업의 예외 처리 방법에 대해 알아보겠습니다.
1. 프로미스를 사용한 비동기 작업의 예외 처리
프로미스를 사용하여 비동기 작업을 수행하는 경우, then
과 catch
를 사용하여 예외를 처리할 수 있습니다. 아래는 프로미스를 사용한 예외 처리의 간단한 예시입니다.
function asyncTask(): Promise<number> {
return new Promise((resolve, reject) => {
// 비동기 작업 수행
if (/* 작업 성공 */) {
resolve(result);
} else {
reject(new Error('작업 실패'));
}
});
}
asyncTask()
.then((result) => {
// 성공 시 처리
})
.catch((error) => {
// 실패 시 처리
});
then
으로 성공 시의 처리를, catch
로 실패 시의 처리를 각각 정의할 수 있습니다.
2. async/await를 사용한 비동기 작업의 예외 처리
async/await를 사용하여 비동기 작업을 수행하는 경우, try...catch
블록을 사용하여 예외를 처리할 수 있습니다. 아래는 async/await를 사용한 예외 처리의 간단한 예시입니다.
async function asyncTask(): Promise<void> {
try {
const result = await someAsyncOperation();
// 성공 시 처리
} catch (error) {
// 실패 시 처리
}
}
try
블록 안에서 await
를 이용해 비동기 작업을 수행하고, 성공 시에는 이어지는 코드를 실행합니다. 실패 시에는 catch
블록으로 제어가 이동하여 예외를 처리합니다.
3. 비동기 함수 시그너처에 예외 처리 추가
함수 시그너처에도 예외 처리를 명시할 수 있습니다. 예를 들어, 비동기 함수의 시그너처에 Promise
를 사용하여 예외 처리를 정의할 수 있습니다.
async function asyncTask(): Promise<number> {
// 비동기 작업 수행
if (/* 작업 성공 */) {
return result;
} else {
throw new Error('작업 실패');
}
}
이와 같이 함수 시그너처에 명시된 예외 처리는 개발자에게 함수를 사용할 때 올바른 예외 처리를 유도할 수 있습니다.
마치며
타입스크립트에서의 비동기 작업 예외 처리는 프로미스, async/await, 함수 시그너처 등을 통해 다양한 방법으로 수행할 수 있습니다. 적절한 예외 처리를 통해 안정적인 애플리케이션을 구축할 수 있도록 신경 써야 합니다.
참고: 타입스크립트 공식 문서 - 비동기 코드에 대한 예외 처리