Skip to content

Commit 5806713

Browse files
authored
Update article.md
1 parent 23be40f commit 5806713

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

1-js/10-error-handling/2-custom-errors/article.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,12 +129,12 @@ try {
129129
130130
Версия с `instanceof` гораздо лучше, потому что в будущем мы собираемся расширить `ValidationError`, сделав его подтипы, как `PropertyRequiredError`. И проверка `instanceof` продолжит работать для новых наследованных классов. Так что это на будущее.
131131
132-
Также важно, что если `catch` встретит неизвестную ошибку, то он снова выбросит исключение в строке `(**)`. `catch` знает только как обрабатывать ошибки валидации и синтаксические ошибки, а другие виды ошибок (опечатки и тому подобное) он должен попустить.
132+
Также важно, что если `catch` встретит неизвестную ошибку, то он снова выбросит исключение в строке `(**)`. `catch` знает, только как обрабатывать ошибки валидации и синтаксические ошибки, а другие виды ошибок (опечатки и тому подобное) он должен попустить.
133133
134134
135135
## Дальнейшее наследование
136136
137-
Класс `ValidationError` является слишком общим и много что может пойти не так. Свойство может отсутствовать или иметь неверный формат (как строковое значение для `age`). Поэтому для отсутствующих свойств сделаем более конкретный класс `PropertyRequiredError`. Он будет нести дополнительную информацию о свойстве, которое отсутствует.
137+
Класс `ValidationError` является слишком общим, и много что может пойти не так. Свойство может отсутствовать или иметь неверный формат (как строковое значение для `age`). Поэтому для отсутствующих свойств сделаем более конкретный класс `PropertyRequiredError`. Он будет нести дополнительную информацию о свойстве, которое отсутствует.
138138
139139
```js run
140140
class ValidationError extends Error {
@@ -225,7 +225,7 @@ alert( new PropertyRequiredError("field").name ); // PropertyRequiredError
225225
226226
Назначение функции `readUser` в приведенном выше коде - это "чтение данных пользователя", верно? Там могут возникнуть различные виды ошибок в процессе. Сейчас у нас есть `SyntaxError` и `ValidationError`, но в будущем функция `readUser` может расшириться: новый код, вероятно, будет генерировать другие виды ошибок.
227227
228-
Код, который вызывает `readUser`, должен обрабатывать эти ошибки. Сейчас используются множественные `if` в блоке `catch` для обработки ошибок известных типов и пробрасывание дальше ошибок неизвестного типа. Но если функция `readUser` генерирует несколько видов ошибок, то мы должны спросить себя: действительно ли мы хотим проверять все типы ошибок поодиночке во всех местах в коде, где вызывается `readUser`?
228+
Код, который вызывает `readUser`, должен обрабатывать эти ошибки. Сейчас используются множественные `if` в блоке `catch` для обработки ошибок известных типов и пробрасывание дальше ошибок неизвестного типа. Но если функция `readUser` генерирует несколько видов ошибок, то мы должны спросить себя: действительно ли мы хотим проверять все типы ошибок поодиночке во всех местах в коде, где вызывается `readUser`?
229229
230230
Часто ответ "Нет": внешний код хочет быть на один уровень выше всего этого. Он хочет иметь какую-то обобщённую ошибку чтения данных. Почему именно это произошло -- часто не имеет значения (об этом говорится в сообщении об ошибке). Или даже лучше, если есть способ получить подробности об ошибке, но только если нам это нужно.
231231
@@ -303,7 +303,7 @@ try {
303303
304304
Внешний код проверяет только `instanceof ReadError`. Не нужно перечислять все возможные типы ошибок
305305
306-
Этот подход называется "обертывание исключений", потому что мы берём "исключения низкого уровня" и "заключаем" их в `ReadError`, который является более абстрактным и более удобным для использования в вызывающем коде. Такой подход широко используется в объектно-ориентированном программировании.
306+
Этот подход называется "обёртывание исключений", потому что мы берём "исключения низкого уровня" и "заключаем" их в `ReadError`, который является более абстрактным и более удобным для использования в вызывающем коде. Такой подход широко используется в объектно-ориентированном программировании.
307307
308308
## Итого
309309

0 commit comments

Comments
 (0)