Implement new Concept Exercise: exceptions
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- fsharp
- Domain
- content
Research direction
Read docs/concept-exercises.md, docs/rationale-for-v3.md, docs/features-of-v3.md, and languages/fsharp/reference/implementing-a-concept-exercise.md before starting. Use the existing F# concept exercises and the stated prerequisites as entry points. Done means the exceptions exercise teaches the listed objectives, follows the v3 structure, and needs no representer or analyzer changes.
Written by the indexing model from the issue text.
Description
This issue describes how to implement the exceptions concept exercise for the F# 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 up on the following documents:
Please also watch the following video:
Goal
The goal of this exercise is to teach the student the basics of the Concept of Exceptions in F#.
Learning objectives
- Know what exceptions are.
- Know when an exception should be raised.
- Know how to raise (and reraise) an exception.
- Know how to catch an exception.
- Know how to use a finally block to always execute logic even when there are exceptions.
- Know the most important built-in exceptions (
ArgumentException,InvalidOperationException) and built-in functions to raise them. - Know how to define a custom exception.
- Know how to use pattern matching on types.
Out of scope
- Memory and performance characteristics.
- Know when to use exceptions vs results.
Concepts
The Concepts this exercise unlocks are:
exceptions: know what exceptions are; know when an exception should be raised; know how to raise (and reraise) an exception; know how to catch an exception; know how to use a finally block to always execute logic even when there are exceptions; know the most important built-in exceptions (ArgumentException,InvalidOperationException) and built-in functions to raise them; know how to define a custom exception; know how to use pattern matching with exceptions; know when to use exceptions vs results.pattern-matching-types: know how to pattern match on a specific type.
Prerequisites
This exercise's prerequisites Concepts are:
pattern-matching: know how to do pattern matching.string-formatting: know how to do string formatting (used in thefailwithffunction).inheritance: know how to inherit from a class.
Resources to refer to
Hints
- Exception handling: exception handling in F#.
- Exception introduction: introduction to exceptions in F#.
After
- Exception handling: exception handling in F#.
- Exception introduction: introduction to exceptions in F#.
- Exceptions vs Result: shows the difference between using exceptions vs Results.
Representer
This exercise does not require any specific representation logic to be added to the representer.
Analyzer
This exercise does not require any specific logic to be added to the analyzer.
Implementing
To implement this exercise, please follow these instructions.
Help
If you have any questions while implementing the exercise, please post the questions as comments in this issue.
- Dominant language
- F#
- Stars
- 118
- Forks
- 113
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 2
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from exercism/fsharp
-
Difficulty 4/5 3-5 days Newbie friendliness 42/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
-
Difficulty 5/5 Over a week Newbie friendliness 18/100
-
exercism/fsharp#1173 · 1 comment · 2 reactions · 1 assignee ·
Similar issues
-
curation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
amponce/archive-movie-browser#186 ·
-
Link Checker Report Openautomated issue report
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulty 1/5 Under an hour Newbie friendliness 95/100
-
Ecosystem: ClawMetry — the Qwen Code reader is now free and open source (follow-up to #9294 / #9338) Opencategory/integration priority/P3 scope/documentation status/ready-for-human type/feature-request
Difficulty 1/5 Under an hour Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
TheOdinProject/curriculum#31408 ·