From 85bec0846ee0d173e8fa253ec7490dabc1696a27 Mon Sep 17 00:00:00 2001 From: Matus Valo Date: Sat, 7 May 2022 19:49:26 +0200 Subject: [PATCH 1/4] Added try-except-raise message example Co-authored-by: Vladyslav Krylasov --- doc/data/messages/t/try-except-raise/bad.py | 4 ++++ doc/data/messages/t/try-except-raise/good.py | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 doc/data/messages/t/try-except-raise/bad.py create mode 100644 doc/data/messages/t/try-except-raise/good.py diff --git a/doc/data/messages/t/try-except-raise/bad.py b/doc/data/messages/t/try-except-raise/bad.py new file mode 100644 index 0000000000..8c5ab84778 --- /dev/null +++ b/doc/data/messages/t/try-except-raise/bad.py @@ -0,0 +1,4 @@ +try: + 1 / 0 +except: # [try-except-raise] + raise diff --git a/doc/data/messages/t/try-except-raise/good.py b/doc/data/messages/t/try-except-raise/good.py new file mode 100644 index 0000000000..6489681850 --- /dev/null +++ b/doc/data/messages/t/try-except-raise/good.py @@ -0,0 +1,4 @@ +try: + 1 / 0 +except ZeroDivisionError as e: + raise ValueError from e From 7e0708dd88b3f21af32a5944e2917242b29e4233 Mon Sep 17 00:00:00 2001 From: Matus Valo Date: Sun, 8 May 2022 14:22:21 +0200 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: Pierre Sassoulas --- doc/data/messages/t/try-except-raise/bad.py | 2 +- doc/data/messages/t/try-except-raise/good.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/data/messages/t/try-except-raise/bad.py b/doc/data/messages/t/try-except-raise/bad.py index 8c5ab84778..8db8da44cf 100644 --- a/doc/data/messages/t/try-except-raise/bad.py +++ b/doc/data/messages/t/try-except-raise/bad.py @@ -1,4 +1,4 @@ try: 1 / 0 -except: # [try-except-raise] +except ZeroDivisionError as e: # [try-except-raise] raise diff --git a/doc/data/messages/t/try-except-raise/good.py b/doc/data/messages/t/try-except-raise/good.py index 6489681850..1d9a671b4a 100644 --- a/doc/data/messages/t/try-except-raise/good.py +++ b/doc/data/messages/t/try-except-raise/good.py @@ -1,4 +1,8 @@ +# The try except might be remove entirely: +1 / 0 + +# Or another more detailed exception can be raised: try: 1 / 0 except ZeroDivisionError as e: - raise ValueError from e + raise ValueError("The area of the rectangle cannot be zero") from e From 354453687f6c0fa36c6de6988c53273216965e4b Mon Sep 17 00:00:00 2001 From: Pierre Sassoulas Date: Sun, 8 May 2022 15:45:04 +0200 Subject: [PATCH 3/4] Update doc/data/messages/t/try-except-raise/good.py Co-authored-by: Jacob Walls --- doc/data/messages/t/try-except-raise/good.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/data/messages/t/try-except-raise/good.py b/doc/data/messages/t/try-except-raise/good.py index 1d9a671b4a..27f19afc69 100644 --- a/doc/data/messages/t/try-except-raise/good.py +++ b/doc/data/messages/t/try-except-raise/good.py @@ -1,4 +1,4 @@ -# The try except might be remove entirely: +# The try except might be removed entirely: 1 / 0 # Or another more detailed exception can be raised: From b784ff9471d8451f4eccb630f636dd335455495f Mon Sep 17 00:00:00 2001 From: Matus Valo Date: Mon, 9 May 2022 11:39:07 +0200 Subject: [PATCH 4/4] Added details.rst --- .../messages/t/try-except-raise/details.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 doc/data/messages/t/try-except-raise/details.rst diff --git a/doc/data/messages/t/try-except-raise/details.rst b/doc/data/messages/t/try-except-raise/details.rst new file mode 100644 index 0000000000..8d5423c7d1 --- /dev/null +++ b/doc/data/messages/t/try-except-raise/details.rst @@ -0,0 +1,18 @@ +There is a legitimate use case for re-raising immediately. E.g. with the following inheritance tree:: + + +-- ArithmeticError + +-- FloatingPointError + +-- OverflowError + +-- ZeroDivisionError + +The following code shows valid case for re-raising exception immediately:: + + def execute_calculation(a, b): + try: + return some_calculation(a, b) + except ZeroDivisionError: + raise + except ArithmeticError: + return float('nan') + +The pylint is able to detect this case and does not produce error.