Silently swallowing errors hides bugs and makes debugging a nightmare.
// dirty — errors are swallowed
function solve(json: string): unknown {
try {
return JSON.parse(json);
} catch (e) {
return null; // swallowed — caller has no idea what went wrong
}
}Refactor `solve(json)` so failure is never silent: on success return { ok: true, value: <parsed> }, on failure return { ok: false, error: 'Invalid JSON' } — never a bare null that hides which case happened.
Sample tests