跳到内容

raw-string-in-exception (EM101)

源自 flake8-errmsg linter。

有时提供修复。

作用

检查异常构造函数中字符串字面量的使用情况。

预览 中,此规则检查异常构造函数中字节字符串字面量的使用情况。

为什么这不好?

Python 在默认的回溯中包含 raise(并且像 Rich 和 IPython 这样的格式化程序也这样做)。

通过使用字符串字面量,错误消息将在回溯中重复,这会使回溯的可读性降低。

示例

给定

raise RuntimeError("'Some value' is incorrect")

Python 将产生像这样的回溯

Traceback (most recent call last):
  File "tmp.py", line 2, in <module>
    raise RuntimeError("'Some value' is incorrect")
RuntimeError: 'Some value' is incorrect

相反,将字符串赋值给变量

msg = "'Some value' is incorrect"
raise RuntimeError(msg)

这将产生像这样的回溯

Traceback (most recent call last):
  File "tmp.py", line 3, in <module>
    raise RuntimeError(msg)
RuntimeError: 'Some value' is incorrect