nestJS exception rasing 방식에 대해

nestJS는 스프링과 마찬가지로 exception rasing을 유도해서 예외처리를 한다. 이런 방식은 편리해 보이지만 에러 객체를 따로 관리해줘야 한다. 관리범위 밖의 에러는 깔끔하게 처리하지 못한다. 예를들어 typeOrm에는 findOneOrFail이라는 메서드가 있다. 하지만 nestJS에서는 이를 온전히 사용할 수 없다. exception rasing을 유도하지만 다른 라이브러리의 exception은 처리하지 못한다. 또한, 함수나 메서드에서 exception을 유도한다면 catch문을 유도하기때문에 코드가 오히려 늘어날 수도 있다. 에러 결과는 새로운 스코프에서 처리해야하는 부작용도 발생한다. 거기에다 결과 값에 대한 타입 확장도 발생해서 코드가 더 복잡해진다.

exception rasing은 편리할 수도 있지만 남발하는 것은 코드를 더 복잡하게 만들 수 있다. 이런 방식을 유도하는 nestJS는 많은 아쉬움이 남는다.