exercism / exercism/swift

[v3] Implement new Concept Exercise: error-handling

Open
#412 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Swift
Stars
122
Forks
165
PR merge metrics
No merged PRs in 30d

Description

This issue describes how to implement the error-handling concept exercise for the Swift track.

## Getting started

**Please please please read the docs before starting.** Posting PRs without reading these docs will be a lot more frustrating for you during the review cycle, and exhaust Exercism's maintainers' time. So, before diving into the implementation, please read the following documents:

- [The features of v3][docs-features-of-v3].
- [Rationale for v3][docs-rationale-for-v3].
- [What are concept exercises and how are they structured?][docs-concept-exercises]

Please also watch the following video:

- [The Anatomy of a Concept Exercise][anatomy-of-a-concept-exercise].

## Goal

This concept exercise should convey a basic understanding of how to handle errors in Swift.

## Things to teach

- Errors
- Throwing errors
- try, try?, try!
- do … catch

## Things not to teach

- Deferred actions
- rethrows
- trhe Result type

## Concepts

- `error-handling`

## Prerequisites

- `enumerations`
- `functions`

## Resources to refer to

### Hints

- [Defining and throwing errors][representing-errors]
- [Throwing functions][propagating-errors]
- [Do-Catch][do-catch]

### After

- [Defining and throwing errors][representing-errors]
- [Throwing functions][propagating-errors]
- [Do-Catch][do-catch]
- [try?][try?]
- [try!][try!]

## Representer

TBD

## Analyzer

TBD

## Implementing

See [the Swift track implementation guide][swift-implementing-concept-exercises] for guidance.

## Help

If you have any questions while implementing the exercise, please post the questions as comments in this issue.

[swift-implementing-concept-exercises]: https://github.com/wneumann/v3/blob/master/languages/swift/reference/implementing-a-concept-exercise.md
[representing-errors]: https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID509
[propagating-errors]: https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID510
[do-catch]: https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID541
[try?]: https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID542
[try!]: https://docs.swift.org/swift-book/LanguageGuide/ErrorHandling.html#ID514
[docs-concept-exercises]: ../../../docs/concept-exercises.md
[docs-rationale-for-v3]: ../../../docs/rationale-for-v3.md
[docs-features-of-v3]: ../../../docs/features-of-v3.md
[anatomy-of-a-concept-exercise]: https://www.youtube.com/watch?v=gkbBqd7hPrA

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.