업무 실패를 데이터로 다루고 예상 밖 오류와 구분합니다.
검증 실패와 재고 부족처럼 예상 가능한 결과는 명시적인 성공·실패 union으로 반환할 수 있습니다. 시스템 오류는 오류 경계와 관측으로 전달합니다.
사용자 메시지와 내부 로그 정보를 분리하고 안정적인 오류 code를 계약에 포함합니다.
catch로 모든 오류를 성공값으로 바꾸면 모니터링과 재시도 판단이 어려워집니다.
오류 문자열을 화면 여러 곳에서 비교하지 말고 안정적인 code와 타입을 사용하세요.
로컬 프로젝트에서 확인해보세요FORBIDDEN 실패 사례와 안내 문구를 추가하세요.
function enroll(capacity, current) {
if (current >= capacity)
return { ok: false, code: "FULL", message: "정원이 찼습니다." };
return { ok: true, remaining: capacity - current - 1 };
}
export default function Page() {
const result = enroll(20, 20);
return (
<main>
<h1>수강 신청</h1>
{result.ok ? (
<p>남은 자리 {result.remaining}</p>
) : (
<p role="alert">
{result.message} ({result.code})
</p>
)}
</main>
);
}