为什么我不能将 ValueError 消息与 urllib 模块中的字符串进行比较?

Why i can't compare ValueError message with string in urllib module?

在python3中:

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
try:
    req = Request("wrong url")
except ValueError as e:
    if e == "unknown url type: 'wrong url'" :print("bad url")

为什么我的 python 控制台没有 bad url 输出?
无法将 ValueError 消息与字符串

进行比较

1.Think你告诉我'str(e)'
2.It 是 "unknown url type: 'wrong url'" 而不是 "unknown url type: wrong url" ,我已经在我的控制台上测试过了。

您正在将异常对象与字符串进行比较

您应该与 str(e) 进行比较以获得匹配,例如

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
try:
    req = Request("wrong url")
except ValueError as e:
    if "unknown url type" in str(e) :
        print("bad url")

if "unknown url type" in str(e) :

考虑 python 3.x 版本之间返回字符串的差异。

你应该先把它传给str

if str(e) == "unknown url type: 'wrong url'" :