evals / debt-shop

raise-bad-price

Expected

Hidden from the reviewer, like the grading note below.

no-swallowed-errors
holds

parse_price now raises BadPrice from the ValueError instead of returning None, and load_catalog no longer skips rows without a price. The change removes an existing violation; raising another exception is allowed. Store.find is unchanged. The contract holds for this change.

Change

Contracts

no-swallowed-errors
---
name: no-swallowed-errors
message: Let errors crash; never catch an exception to hide it.
---

## Rules

Python code under `shop/` must not suppress exceptions.
Every `except` block must re-raise the exception or raise another exception, for example `raise BadRequest(...) from err`.
An `except` block that returns a value, returns `None`, uses `pass` or `continue`, or only logs is forbidden.
`contextlib.suppress` is forbidden for the same reason.
`try/finally` used only for cleanup, such as closing a file, is allowed.