# ❤ Benefits

<details>

<summary>Problem and its solution</summary>

<mark style="color:green;">**✓**</mark> The error message is **divided** into the **problem** and its **solution**.

<mark style="color:green;">**✓**</mark> An error has the **problem**.

<mark style="color:green;">**✓**</mark> An error has a **solution** to the described problem.

<mark style="color:green;">**✓**</mark> There is no error without a **potential solution**.

</details>

<details>

<summary>Unique identification</summary>

<mark style="color:green;">**✓**</mark> An error can have **unique identification** of generic type variable.

<mark style="color:green;">**✓**</mark>**&#x20;Unique identification** numbers enforce the **systematization** of application errors.

<mark style="color:green;">**✓**</mark> Enforcement of systematization produces **thoughtful application**.

</details>

<details>

<summary>Template</summary>

<mark style="color:green;">**✓**</mark> Template with **replaceable variable** tags `{problem}` `{fix}` `{id}` `{min}` `{max}` `{type}` `{link}`.

<mark style="color:green;">**✓**</mark> Each error can be thrown with a **different** template.

</details>

<details>

<summary>Range error</summary>

<mark style="color:green;">**✓**</mark> An error contains additional parameters to indicate the minimum and maximum range that causes an error to be or not to be thrown.

</details>

<details>

<summary>Type error</summary>

<mark style="color:green;">**✓**</mark> An error contains an additional parameter to indicate the type that causes an error to be or not to be thrown.

</details>

<details>

<summary>Custom error</summary>

<mark style="color:green;">**✓**</mark> Create custom errors that feature: message divided into problem and fix, unique identification, and the template by extending the abstract object.

</details>

<details>

<summary>Storage to manage errors</summary>

<mark style="color:green;">**✓**</mark> The objects to **manage** errors of the same type of multiple unique identification numbers.

<mark style="color:green;">**✓**</mark>**&#x20;Set** the error at a selected number from the group of unique identification numbers.

<mark style="color:green;">**✓**</mark>**&#x20;Throw** an error with a selected number from the group of unique identification numbers.

<mark style="color:green;">**✓**</mark>**&#x20;Get** a single error of a selected number from the group of unique identification numbers.

<mark style="color:green;">**✓**</mark>**&#x20;Get** all set errors.

</details>
