에러 처리 (try-catch와 unknown)
에러가 났을 때 무엇이 던져질지는 아무도 모르기 때문에, TS는 catch 블록의 에러를 unknown으로 강제합니다. 따라서 instanceof Error와 같은 타입 가드로 에러의 정체를 한 번 확인한 후 처리해야 하는 매우 견고한 방어 코드를 작성하게 됩니다.
☣️
미확인 위험 물질 (unknown 에러) 다루기
폭발한 에러가 일반적인 Error 객체인지, 아니면 이상한 문자열인지 알 수 없으므로, 방호복(instanceof 타입 가드)을 입고 안전한 객체임이 확인된 뒤에만 접근을 허용합니다.
try {
throw new Error("서버 폭발!");
} catch (error: unknown) {
// TS 4.0부터 catch의 error는 무조건 unknown 타입입니다! (과거엔 any였음)
// 따라서 에러 객체인지 확실히 검사(타입 가드)한 후에만 접근할 수 있습니다.
if (error instanceof Error) {
console.log(error.message); // 안전하게 접근 가능!
} else {
console.log("알 수 없는 에러:", error);
}
}