Swift error handling
Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/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)From its SKILL.md
npx -y skills add ComeOnOliver/skillshub --skill swift-error-handlingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
1.7 KB, 344 tokens by cl100k_base, as published. Nobody here has run it
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.
References
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.