From 3fc1de671717cf2840fd7e8f2ba0fcc78d406eee Mon Sep 17 00:00:00 2001 From: Kirk Kirkconnell Date: Mon, 7 Aug 2023 16:51:58 -0700 Subject: [PATCH] Adding error handling page --- .../02-client-configuration-objects.md | 0 .../03-error-handling-production-readiness.md | 35 ++++++++++++++++++ docs/develop/basics/_category_.json | 9 +++++ docs/develop/index.md | 25 ------------- static/img/error-handling.jpg | Bin 0 -> 47110 bytes 5 files changed, 44 insertions(+), 25 deletions(-) rename docs/develop/{guides => basics}/02-client-configuration-objects.md (100%) create mode 100644 docs/develop/basics/03-error-handling-production-readiness.md create mode 100644 docs/develop/basics/_category_.json create mode 100644 static/img/error-handling.jpg diff --git a/docs/develop/guides/02-client-configuration-objects.md b/docs/develop/basics/02-client-configuration-objects.md similarity index 100% rename from docs/develop/guides/02-client-configuration-objects.md rename to docs/develop/basics/02-client-configuration-objects.md diff --git a/docs/develop/basics/03-error-handling-production-readiness.md b/docs/develop/basics/03-error-handling-production-readiness.md new file mode 100644 index 000000000..a28bcdab3 --- /dev/null +++ b/docs/develop/basics/03-error-handling-production-readiness.md @@ -0,0 +1,35 @@ +--- +sidebar_position: 3 +sidebar_label: SDK Error Handling +sidebar_class_name: "sidebar-item-api-reference" +title: SDK error handling / Production readiness +description: need to write this. +pagination_next: null +--- + +# SDK Error Handling / Production Readiness + +a technical illustration of Momento client configuration objects. + +Each of our SDKs has its own page in this documentation; you can navigate to them by clicking `Develop`->`SDKs` in the left nav. On each of these pages, you'll find a link for "Taking your code to prod" that provides best practices for production-ready code in that language. + +Here are some general notes on error handling in Momento that apply to all SDKs. + +Errors which occur in calls to `CacheClient` methods (e.g. Get, Set, Increment) are surfaced to developers as part of the return values of the calls, as opposed to throwing exceptions. This makes errors more visible when you're writing your code, and allows your IDE to be more helpful in ensuring you've handled the errors you care about. For more on our philosophy about this, see our blog post on why [Exceptions are bugs](https://www.gomomento.com/blog/exceptions-are-bugs), and send us any feedback you have! + +This also helps to ensure your application doesn't crash at runtime. Momento is a cache, so applications usually have an authoritative data source they retrieve data from if the cache is unavailable. Therefore, Momento SDKs are designed to avoid throwing exceptions so your app won't crash if you forget to add a try/catch block. + +Instead, Momento response objects extend from a parent class, have child types such as `Hit,` `Miss,` and `Error,` and are designed to be accessed via pattern matching. (In some languages, this concept is called "sealed classes"; in others, "algebraic data types". It is a flavor of polymorphism.) Your code checks whether the response is a `Hit,` a `Miss,` or an `Error`, and then branches accordingly. Using this approach, you get a type-safe response object in the case of a cache hit, with `value` properties that you can be assured at compile-time are not `null.` If the cache read results in a `Miss` or an `Error,` you'll also get a type-safe object that you can use to get more information about what happened (with properties such as `errorCode` that aren't present on a `Hit` object). + +Here's an example of how to do the pattern matching on a `Hit`/`Miss`/`Error` response: + + + +Some APIs, such as write APIs (e.g. Set, Delete) only have `Success` and `Error` responses (as opposed to `Hit`/`Miss`). Here's an example of handling one of these responses: + + + +In all cases, your IDE will be able to give you hints as to which types of responses are available for a given API, and what properties/methods are available on each of the response types. + +For an example of how errors response work and use, watch this video: + diff --git a/docs/develop/basics/_category_.json b/docs/develop/basics/_category_.json new file mode 100644 index 000000000..818b0b24f --- /dev/null +++ b/docs/develop/basics/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "Basics", + "position": 2, + "link": { + "title": "Basics", + "description": "Basics to help get you going on using the Momento SDK.", + }, + "className": "sidebar-item-guides" +} diff --git a/docs/develop/index.md b/docs/develop/index.md index 5fa222b5b..b3306fb01 100644 --- a/docs/develop/index.md +++ b/docs/develop/index.md @@ -39,31 +39,6 @@ For an example of how to retrieve credentials from AWS Secrets Manager, see [Ret For general information on creating and refreshing Momento auth tokens, see [Momento authentication with expiring tokens](/develop/guides/working-with-momento-auth-tokens). -## Error Handling / Production Readiness - -Each of our SDKs has its own page in this documentation; you can navigate to them by clicking `Develop`->`SDKs` in the left nav. On each of these pages, you'll find a link for "Taking your code to prod" that provides best practices for production-ready code in that language. - -Here are some general notes on error handling in Momento that apply to all SDKs. - -Errors which occur in calls to `CacheClient` methods (e.g. Get, Set, Increment) are surfaced to developers as part of the return values of the calls, as opposed to throwing exceptions. This makes errors more visible when you're writing your code, and allows your IDE to be more helpful in ensuring you've handled the errors you care about. For more on our philosophy about this, see our blog post on why [Exceptions are bugs](https://www.gomomento.com/blog/exceptions-are-bugs), and send us any feedback you have! - -This also helps to ensure your application doesn't crash at runtime. Momento is a cache, so applications usually have an authoritative data source they retrieve data from if the cache is unavailable. Therefore, Momento SDKs are designed to avoid throwing exceptions so your app won't crash if you forget to add a try/catch block. - -Instead, Momento response objects extend from a parent class, have child types such as `Hit,` `Miss,` and `Error,` and are designed to be accessed via pattern matching. (In some languages, this concept is called "sealed classes"; in others, "algebraic data types". It is a flavor of polymorphism.) Your code checks whether the response is a `Hit,` a `Miss,` or an `Error`, and then branches accordingly. Using this approach, you get a type-safe response object in the case of a cache hit, with `value` properties that you can be assured at compile-time are not `null.` If the cache read results in a `Miss` or an `Error,` you'll also get a type-safe object that you can use to get more information about what happened (with properties such as `errorCode` that aren't present on a `Hit` object). - -Here's an example of how to do the pattern matching on a `Hit`/`Miss`/`Error` response: - - - -Some APIs, such as write APIs (e.g. Set, Delete) only have `Success` and `Error` responses (as opposed to `Hit`/`Miss`). Here's an example of handling one of these responses: - - - -In all cases, your IDE will be able to give you hints as to which types of responses are available for a given API, and what properties/methods are available on each of the response types. - -For an example of how errors response work and use, watch this video: - - For more information, see our [Response Objects](/develop/api-reference/response-objects) page, and the docs for the specific SDK that you are using (under `Develop`->`SDKs` in the left nav). diff --git a/static/img/error-handling.jpg b/static/img/error-handling.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08cecb48b8d38544819a4591ced9e71acc8f0cbc GIT binary patch literal 47110 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 I?;o50*{?N%3jhEB literal 0 HcmV?d00001