refactor(server): migrate from try/catch to neverthrow Result types #688
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
fix: #581
this PR refactors the entire server codebase to replace all
try/catchblocks withneverthrow'sResultandResultAsynctypes for functional, type-safe error handling. This standardizes error handling across all layers (authentication, database, business logic, providers) and ensures all expected failure paths are explicitly typed.The server previously mixed
try/catchblocks and ad-hoc error handling across request, auth, and accounting layers, making control flow unpredictable and complicating typed error propagation. This refactoring:Standardizes error handling on a single, type-safe pattern
Improves type safety by making all error paths explicit in function signatures
Enhances maintainability with consistent error handling patterns
Enables better error tracking with structured error types and context
Changes
New Error Infrastructure
src/errors/types.ts: Defines standardizedBaseErrorinterface and custom error classessrc/errors/result-helpers.ts: Utility functions for working withResulttypessrc/errors/index.ts: Central export for all error types and helpersRefactored Services
AppResultAsyncEchoControlService,DbService,ModelRequestService) use ResultsResult.isErr()instead of catching exceptionsBaseError, legacyHttpError, and genericErrortypesTesting