{"id":22636140,"url":"https://github.com/47degrees/functional-error-handling","last_synced_at":"2025-07-03T08:07:32.469Z","repository":{"id":148138636,"uuid":"80669676","full_name":"47degrees/functional-error-handling","owner":"47degrees","description":"Functional Error Handling","archived":false,"fork":false,"pushed_at":"2020-09-03T23:50:38.000Z","size":5022,"stargazers_count":24,"open_issues_count":1,"forks_count":2,"subscribers_count":49,"default_branch":"master","last_synced_at":"2025-04-11T21:11:48.739Z","etag":null,"topics":["error-handling","exceptions","exceptions-raised","functional-programming","monads"],"latest_commit_sha":null,"homepage":"https://speakerdeck.com/raulraja/functional-error-handling","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/47degrees.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-02-01T22:11:53.000Z","updated_at":"2021-08-02T08:52:26.000Z","dependencies_parsed_at":"2023-05-19T07:17:52.698Z","dependency_job_id":null,"html_url":"https://github.com/47degrees/functional-error-handling","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/47degrees/functional-error-handling","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Ffunctional-error-handling","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Ffunctional-error-handling/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Ffunctional-error-handling/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Ffunctional-error-handling/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/47degrees","download_url":"https://codeload.github.com/47degrees/functional-error-handling/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/47degrees%2Ffunctional-error-handling/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263287849,"owners_count":23443084,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["error-handling","exceptions","exceptions-raised","functional-programming","monads"],"created_at":"2024-12-09T03:18:29.098Z","updated_at":"2025-07-03T08:07:32.455Z","avatar_url":"https://github.com/47degrees.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Functional Error Handling\n\nExceptions in OOP centric langs such as Java are abused for control flow and event signaling.\nLack of proper support for Monads, Higher Kinded Types and other facilities leave lang users\nwith no alternative but to choose happy paths as return types of method signatures.\n\nIn this talk we will cover some examples regarding the misuse of exceptions and proper data types \nsuch as `Option`, `Try`, `Either[E, A]` and `MonadError[M[_], E]` to model absence of values, failing \ncomputations and alternate paths in method return types.\n\n- [PDF and slides on speakerdeck](https://speakerdeck.com/raulraja/functional-error-handling)\n- [Code samples](src/main/scala/feh/examples) \n- [Deck Markdown sources](deck/README.md)\n\nIf you wish to run this in a local environment on reveal.js at http://localhost:8000/ : \n\n```bash\ngit clone git@github.com:47deg/functional-error-handling.git\ncd deck\nnpm install\nnpm start \n```\n\nCredits:\n\n- [Doctor Strange Love image and preview clip](https://en.wikipedia.org/wiki/Dr._Strangelove)\n- [The Hidden Performance costs of instantiating Throwables](http://normanmaurer.me/blog/2013/11/09/The-hidden-performance-costs-of-instantiating-Throwables/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F47degrees%2Ffunctional-error-handling","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F47degrees%2Ffunctional-error-handling","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F47degrees%2Ffunctional-error-handling/lists"}