move top-level modules into a real package
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# 8. Avoid Catching `BaseException` in CLI Dispatch
|
||||
|
||||
## Summary
|
||||
|
||||
Change CLI dispatch error handling so process-control exceptions such as `KeyboardInterrupt` and `SystemExit` are not swallowed.
|
||||
|
||||
## Implementation Steps
|
||||
|
||||
- Change `execute_command` to catch `Exception` instead of `BaseException`.
|
||||
- Keep mapped, expected errors handled through the existing command error mapping or its replacement.
|
||||
- Print handled user-facing errors to `stderr` instead of `stdout`.
|
||||
- Allow unmapped exceptions, `KeyboardInterrupt`, and `SystemExit` to propagate normally.
|
||||
- Consider adding debug logging for unexpected exceptions after the logging plan exists.
|
||||
|
||||
## Public Interface Changes
|
||||
|
||||
- Expected command errors still return a non-zero exit code.
|
||||
- Handled error messages move from stdout to stderr.
|
||||
- Interrupt and process-exit behavior becomes conventional.
|
||||
|
||||
## Test Plan
|
||||
|
||||
- Test that a mapped exception returns `1` and writes to stderr.
|
||||
- Test that `KeyboardInterrupt` is not caught by `execute_command`.
|
||||
- Test that unmapped exceptions still propagate.
|
||||
|
||||
## Assumptions
|
||||
|
||||
- Returning `1` for handled user errors remains acceptable until the exit-code conventions plan is implemented.
|
||||
Reference in New Issue
Block a user