# Error Handling

Record: `arch:error-handling`
Kind: principle
Layer: [Correctness Core](https://banes-lab.com/records/layer/correctness-core.md)
Severity: mandatory
Scope: function, module, service
Canonical: https://banes-lab.com/ontology#arch-error-handling

## Repair

- Refactored by: Add Error Type, Propagate Context, Handle Explicitly
- Detected by: empty catch blocks, unchecked result errors
- Violated by: ignored errors, generic catches, lost context
- Measured by: unhandled error count
- Enforced by: linting, [tests](https://banes-lab.com/records/lex/tests.md)

## requires

- [Error Model](https://banes-lab.com/records/lex/error-model.md)
- [Observability](https://banes-lab.com/records/arch/observability.md)

## reinforces

- [Resilience](https://banes-lab.com/records/arch/resilience.md)
- [Correctness](https://banes-lab.com/records/arch/correctness.md)

## enables

- [Controlled Failure](https://banes-lab.com/records/lex/controlled-failure.md)

## conflicts-with

- [Exception Swallowing](https://banes-lab.com/records/lex/exception-swallowing.md)
- [Exception Control Flow](https://banes-lab.com/records/arch/exception-control-flow.md)

## tensions-with

- [Simplicity](https://banes-lab.com/records/lex/simplicity.md)

## tensions

- [Error Handling Simplicity](https://banes-lab.com/records/tension/error-handling-simplicity.md)

## referenced-by

- [Defensive Programming](https://banes-lab.com/records/arch/defensive-programming.md)
- [Fault Tolerance](https://banes-lab.com/records/arch/fault-tolerance.md)
