gpt4 book ai didi

python - 内存错误消息,因为字符串在 Python 中为空

转载 作者:太空狗 更新时间:2023-10-29 22:29:56 26 4
gpt4 key购买 nike

这是一个非常愚蠢的问题,但我正在运行一些任务并通过以下方式捕获它们的错误:

try:
run_something()
except Exception as e:
handle_error(str(e))

我希望将错误消息作为字符串,因为我正在使用 UI 并且我想在窗口中显示错误。

问题可以重现为:

>>> import numpy as np
>>> np.range(1e10)
MemoryError Traceback (most recent call last)
<ipython-input-4-20a59c2069b2> in <module>()
----> 1 np.arange(1e10)

MemoryError:

但是,如果我 try catch 错误并打印它的消息(我希望它是类似于“MemoryError”的内容:

try:
np.arange(1e10)
except Exception as e:
print(str(e))
print("Catched!")

我得到的唯一输出是“捕获了!”。这太愚蠢了,我正在做一些 UI 和线程方面的工作,我花了一段时间才意识到问题是内存错误,根本没有任何消息。

MemoryError 是唯一被转换为空字符串的异常吗?因为如果是这样,我可以检查它。如果不是,如何将其消息作为字符串获取?

最佳答案

所以你可能想打印异常名称:

try:
np.arange(1e10)
except Exception as e: #not catch...
print(str(e.__class__.__name__))
print("Catched!")

使用 str(e) 仅打印异常的“消息”,在您的情况下它是空的。


请注意,您可以通过 args 属性获取传递给异常构造函数的参数:

In [4]: try:
...: raise ValueError(1,2,3)
...: except ValueError as e:
...: print('arguments:', e.args)
arguments: (1, 2, 3)

关于python - 内存错误消息,因为字符串在 Python 中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31230229/

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