Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

ClojureScript에서 JavaScript 예외를 잡는 방법 완벽 가이드

ClojureScript에서 JavaScript 예외 처리하기

ClojureScript는 JavaScript로 컴파일되기 때문에 런타임에서 발생하는 예외 역시 JavaScript의 Error 객체 형태입니다. 따라서 ClojureScript 코드에서 JavaScript 예외를 잡으려면 기본적으로 제공되는 try/catch 특수 폼(special form)을 사용하면 됩니다. 아래에서 두 가지 대표적인 방법을 살펴보겠습니다.

1. js/Error를 지정하여 잡기

가장 일반적인 방식은 catch 절에 js/Error를 명시하는 것입니다.

(try
  (throw (js/Error. "Error occurred"))
  (catch js/Error e
    e))

여기서 (js/Error. "Error occurred")는 JavaScript의 new Error("Error occurred")와 동일한 동작을 수행합니다. 발생한 예외 객체는 catch 절의 바인딩 변수 e에 담기며, 위 예제에서는 해당 객체를 그대로 반환하고 있습니다.

2. :default로 모든 예외 잡기

JavaScript는 문자열, 숫자 등 어떤 값이든 던질(throw) 수 있다는 독특한 특징이 있습니다. 이처럼 Error 객체가 아닌 값까지 안전하게 처리하려면 :default 키워드를 사용하면 됩니다.

(try
  (throw (js/Error. "Error Occurred!"))
  (catch :default e
    e))

:default는 타입을 가리지 않고 던져진 모든 값을 잡아내므로, JavaScript 생태계와 상호 운용할 때 발생할 수 있는 다양한 예외를 포괄적으로 처리할 수 있습니다.

정리 및 실무 팁

ClojureScript에서 JavaScript 예외를 잡는 방법은 크게 두 가지입니다.

  • js/Error 지정: 표준 Error 객체만 대상으로 할 때 사용합니다.
  • :default 사용: JavaScript가 던질 수 있는 모든 값(문자열, 숫자 등)까지 포괄적으로 처리할 때 사용합니다.

실무에서는 외부 JavaScript 라이브러리와 연동할 때 :default를 사용하는 편이 더 안전합니다. 또한 잡은 예외를 instance? js/Error e와 같이 검사한 뒤 분기 처리하거나, ex-message, ex-data 등을 활용해 오류 정보를 추출하는 패턴도 널리 쓰입니다. 상황에 맞는 방식을 선택해 견고한 예외 처리 로직을 구성해 보세요.