AGENT SKILL
swift-error-handling
Standards for Throwing Functions, Result Type, and Never. Use when implementing Swift error throwing, Result<T,E>, or designing error hierarchies. (triggers: **/*.swift, throws, try, catch, Result, Error)
- License 许可
- MIT
- 最近更新
- 2026-06-24
- Stars
- ★ 66
- Forks
- 24
01 前言 Front Matter
- name
- swift-error-handling
- description
- Standards for Throwing Functions, Result Type, and Never. Use when implementing Swift error throwing, Result<T,E>, or designing error hierarchies. (triggers: **/*.swift, throws, try, catch, Result, Error)
02 资源文件 4
- 参考文档BENCHMARK.md3.1 KB
- 参考文档evals/evals.json5.7 KB
- 参考文档skill-card.md3.6 KB
- 其他skill.oms.sig4.5 KB
03 SKILL.md 正文
Swift Error Handling
Priority: P0
Implementation Guidelines
Throwing Functions
- Propagate Errors: Use
throwsfor recoverable errors andasync throwsfor modern concurrency. - Do-Catch: Handle errors close to source with specific catch clauses for each error type. Catch-all
catchshould be the last resort. - Error Types: Define custom errors as
enumconforming to Error (e.g.,enum NetworkError: Error { case connectionLost }) for user-facing descriptions. - Optional Try: Use
try?only for non-critical errors.
Result Type
- Async Alternatives: Use throws for synchronous code. Use Result for callbacks and non-async deferred error states.
- Transformations: Use
.map(),.flatMap()for functional composition. - Conversion: Use
.get()to convertResultto throwing for use intry-catch.
Never Type & Preconditions
- Fatalisms: Use
Neverreturn type only for unrecoverable crash scenarios or to indicate unreachable code. Never for expected errors. - Preconditions: Use
precondition(),assert(), andfatalError()for programmer errors. UseassertionFailure()for debug-only checks.
Anti-Patterns
- No try!: Use try? or do-catch.
- No try? without nil check: Handle or log.
- No Error(message): Use typed errors.