From c2dd151ed551935145a395e83228c064f3a4d322 Mon Sep 17 00:00:00 2001 From: Vadim Nifadev <36514612+nifadyev@users.noreply.github.com> Date: Tue, 23 Apr 2024 11:45:32 +0300 Subject: [PATCH] Translate Catching the Exceptions example --- translations/README-ru.md | 76 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/translations/README-ru.md b/translations/README-ru.md index 070cf6a..135ddae 100644 --- a/translations/README-ru.md +++ b/translations/README-ru.md @@ -2354,3 +2354,79 @@ def some_func(default_arg=[]): ``` --- + + +### ▶ Ловля исключений + +```py +some_list = [1, 2, 3] +try: + # Должно вернуться ``IndexError`` + print(some_list[4]) +except IndexError, ValueError: + print("Caught!") + +try: + # Должно вернуться ``ValueError`` + some_list.remove(4) +except IndexError, ValueError: + print("Caught again!") +``` + +**Результат (Python 2.x):** +```py +Caught! + +ValueError: list.remove(x): x not in list +``` + +**Результат (Python 3.x):** +```py + File "", line 3 + except IndexError, ValueError: + ^ +SyntaxError: invalid syntax +``` + +#### 💡 Объяснение + +* Чтобы добавить несколько Исключений в блок `except`, необходимо передать их в виде кортежа с круглыми скобками в качестве первого аргумента. Второй аргумент - это необязательное имя, которое при передаче свяжет экземпляр исключения, который был пойман. Пример, + ```py + some_list = [1, 2, 3] + try: + # Должно возникнуть ``ValueError`` + some_list.remove(4) + except (IndexError, ValueError), e: + print("Caught again!") + print(e) + ``` + **Результат (Python 2.x):** + ``` + Caught again! + list.remove(x): x not in list + ``` + **Результат (Python 3.x):** + ```py + File "", line 4 + except (IndexError, ValueError), e: + ^ + IndentationError: unindent does not match any outer indentation level + ``` + +* Отделение исключения от переменной запятой является устаревшим и не работает в Python 3; правильнее использовать `as`. Пример, + ```py + some_list = [1, 2, 3] + try: + some_list.remove(4) + + except (IndexError, ValueError) as e: + print("Caught again!") + print(e) + ``` + **Результат:** + ``` + Caught again! + list.remove(x): x not in list + ``` + +---