Rust 개발, 오류 코드만으론 부족하다?
평면적 오류 코드(Flat Error Codes) 방식은 단순한 애플리케이션에서는 유용하지만, 복잡한 I/O 기반 라이브러리에서는 세부적인 오류 정보 부족 문제를 야기함.
저자는 데이터베이스 드라이버 라이브러리(Database Driver Library)인 `sqlx`와 ORM인 `sea_orm`의 오류 중첩 구조(Nested Error Structure)를 예시로 제시하며, 세분화된 오류 정보의 필요성을 강조함.
댓글에서는 오류 유형에 추가 필드를 정의하여 오류를 더 효과적으로 처리할 수 있는 자식 오류 유형(Child Error Types)의 필요성에 대한 공감대가 형성됨.
평면적 오류 코드(Flat Error Codes)의 한계
저자는 평면적 오류 코드 방식이 I/O(Input/Output)가 많은 라이브러리에서 충분한 정보를 제공하지 못한다고 지적한다. 특히, 데이터베이스 제약 조건(Database Constraints) 위반과 같은 상황에서 구체적인 정보 부재는 오류 처리 로직을 복잡하게 만든다. 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 오류를 세분화하여 처리해야 한다고 주장한다.
중첩된 오류 구조(Nested Error Structure)의 장점
저자는 `sqlx`와 `sea_orm`의 오류 중첩 구조(Nested Error Structure)를 예시로 제시하며, 세분화된 오류 정보의 중요성을 강조한다. `sea_orm`은 `sqlx`의 오류를 중첩하여, 데이터베이스 관련 오류에 대한 상세한 정보(Detailed Information)를 제공한다. 이를 통해 개발자는 제약 조건 이름과 같은 추가 데이터를 활용하여 오류를 효과적으로 처리할 수 있다.
자식 오류 유형(Child Error Types)의 필요성
댓글에서는 오류 처리의 유연성을 높이기 위해 자식 오류 유형(Child Error Types)을 정의하는 방안이 제시되었다. 이는 각 오류 유형에 추가 필드를 포함하여, 오류 처리 로직에서 더 많은 정보(More Information)를 활용할 수 있도록 한다. 특히 오류를 재전송하는 것 외에 다양한 방식으로 처리할 수 있도록 지원한다.
ORM 선택과 오류 처리의 관계
일부 댓글에서는 ORM(Object-Relational Mapping) 선택이 오류 처리 방식에 영향을 미칠 수 있다는 의견이 제시되었다. 하지만 핵심은 ORM의 선택보다는 오류 코드의 구조(Error Code Structure)에 있다는 점이 강조된다. 기술적으로 보면, 자식 오류 유형과 같은 방식을 통해 오류 처리의 유연성을 확보하는 것이 중요하다.