gpt4 book ai didi

python - 使用 Errno 在 Python 中打印异常类型

转载 作者:行者123 更新时间:2023-12-01 04:51:26 26 4
gpt4 key购买 nike

我目前有格式的代码

try:
....
except(HTTPError, URLError, socket.error) as e:
print "error({0}):{1}".format(e.errno, e.strerror)
continue

但想知道这三个中哪一个触发了异常。有没有办法在 python 中做到这一点?

最佳答案

如果做出不同的 react 对您来说很重要,那么您应该单独捕获它们:

try:
do_something()
except HTTPError:
handle_HTTPError()
except URLError:
handle_URLError()
except socket.error:
handle socketerror()

但是,如果您只是想显示或记录错误类型及其参数,则应该使用错误的 repr 而不是尝试自己格式化它。例如:

>>> try:
... raise IOError(911, "Ouch!")
... except IOError as e:
... print "error({0}):{1}".format(e.errno, e.strerror)
... print repr(e)
...
error(911):Ouch!
IOError(911, 'Ouch!')

就显示的信息而言,您组合在一起的打印字符串与仅使用 repr 打印的字符串之间几乎没有什么区别。如果您确实想要打印或记录一条“漂亮”的消息,您可以根据自己的喜好操纵字符串,但是 type(e) 不会为您节省任何精力,它不适合显示/日志记录:

>>> type(e)
<type 'exceptions.IOError'>

关于python - 使用 Errno 在 Python 中打印异常类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com