From 267850a69df89b3ea454c5b3db91107bf7d187e2 Mon Sep 17 00:00:00 2001 From: xujian Date: Tue, 5 Dec 2023 08:36:27 +0000 Subject: [PATCH 1/2] =?UTF-8?q?update=20=E7=BC=96=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E8=8C=83/openKylin-python=E8=AF=AD=E8=A8=80=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E7=BC=96=E7=A8=8B=E8=A7=84=E8=8C=83.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...26\347\250\213\350\247\204\350\214\203.md" | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" index 798c6fc..119843c 100644 --- "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" +++ "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" @@ -313,6 +313,57 @@ except语句的表达式只能是派生自BaseException的类,或者由这些 except (ValueError, TypeError) as exception: print("Catching all exceptions") +## 规则2.5 异常对象的__cause__字段应该是一个异常类或者None(python:S5707) +异常链让开发人员可以查看一个异常是否由另一个异常触发。异常对象可以使用下面的语法串联起来: +raise NewException() from chained_exception +new_exception.__cause__ = chained_exception +同样可以使用new_exception.__cause__ = None或者except ... from None这样的语句中断一个异常链。 +如果这样的语法串联的不是一个异常类对象,那么异常链会失败或者引发一个异常。 + +### 错误代码 + class A: + pass + + try: + raise ValueError("orig") + except ValueError as e: + new_exc = TypeError("new") + new_exc.__cause__ = A() # Noncompliant + raise new_exc + + try: + raise ValueError("orig") + except ValueError as e: + raise TypeError("new") from "test" # Noncompliant + +### 正确代码 + try: + raise ValueError("orig") + except ValueError as e: + new_exc = TypeError("new") + new_exc.__cause__ = None # Ok + raise new_exc + + try: + raise ValueError("orig") + except ValueError as e: + new_exc = TypeError("new") + new_exc.__cause__ = e # Ok + raise new_exc + + try: + raise ValueError("orig") + except ValueError as e: + raise TypeError("new") from None # Ok + + try: + raise ValueError("orig") + except ValueError as e: + raise TypeError("new") from e # Ok + +### 参考资料 +[pep-3134](https://peps.python.org/pep-3134/) +[pep-0409](https://peps.python.org/pep-0409/) # 3 参数与返回值 ## 规则3.1 __init__函数不应该有显示返回值(python:S2734) -- Gitee From 5f38f01aa6722dc49e07d48d9943583810d2b9d8 Mon Sep 17 00:00:00 2001 From: xujian Date: Tue, 5 Dec 2023 08:37:25 +0000 Subject: [PATCH 2/2] =?UTF-8?q?update=20=E7=BC=96=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E8=8C=83/openKylin-python=E8=AF=AD=E8=A8=80=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E7=BC=96=E7=A8=8B=E8=A7=84=E8=8C=83.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xujian --- ...224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" index 119843c..f89ea63 100644 --- "a/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" +++ "b/\347\274\226\347\240\201\350\247\204\350\214\203/openKylin-python\350\257\255\350\250\200\351\200\232\347\224\250\347\274\226\347\250\213\350\247\204\350\214\203.md" @@ -313,7 +313,7 @@ except语句的表达式只能是派生自BaseException的类,或者由这些 except (ValueError, TypeError) as exception: print("Catching all exceptions") -## 规则2.5 异常对象的__cause__字段应该是一个异常类或者None(python:S5707) +## 规则2.6 异常对象的__cause__字段应该是一个异常类或者None(python:S5707) 异常链让开发人员可以查看一个异常是否由另一个异常触发。异常对象可以使用下面的语法串联起来: raise NewException() from chained_exception new_exception.__cause__ = chained_exception @@ -363,6 +363,7 @@ new_exception.__cause__ = chained_exception ### 参考资料 [pep-3134](https://peps.python.org/pep-3134/) + [pep-0409](https://peps.python.org/pep-0409/) # 3 参数与返回值 -- Gitee