피드로 돌아가기
The Utter Failure of the JS Error (and why you should still use JS)
Dev.toDev.to
Frontend

JS의 try-catch 한계를 극복하는 Errors as Values 설계 패러다임 분석

The Utter Failure of the JS Error (and why you should still use JS)

Michael Interlandi2026년 4월 27일11intermediate

Context

초기 단순 스크립트 설계에 최적화된 JavaScript의 Error Handling 메커니즘이 현대의 복잡한 비동기 애플리케이션 요구사항을 충족하지 못하는 한계 발생. Type System에서 에러 발생 가능성을 숨기는 구조로 인해 런타임 예측 가능성이 저하되는 문제 직면.

Technical Solution

  • try-catch의 Opt-in 예측 가능성 한계를 극복하기 위한 Error as Value 패러다임 채택
  • Exception을 던지는 대신 에러 상태를 포함한 Result Type을 반환하는 함수형 구조 설계
  • Rust 언어의 에러 처리 철학을 벤치마킹하여 타입 시스템 수준에서 에러 처리 강제
  • neverthrow 라이브러리 등을 통한 TypeScript 기반의 명시적 에러 핸들링 구현
  • Call Stack 전반에 걸쳐 에러 전파 경로를 가시화하여 런타임 예외 발생 가능성 최소화
  • 라이브러리 설계 시 소비자에게 에러 가능성을 타입으로 명시하여 소스 코드 분석 의존도 제거

- 비즈니스 로직 내 잦은 try-catch 사용 대신 Result-like 패턴 도입 검토 - 함수의 반환 타입에 성공과 실패 케이스를 모두 정의하여 타입 안정성 확보 - 외부 API 호출 및 JSON 파싱 등 잠재적 Failure Point에 대한 명시적 처리 강제 - 런타임 에러를 타입 시스템의 영역으로 끌어올려 정적 분석 단계에서 오류 검출

원문 읽기