(Python) 未显示多个引发的 ValueErrors

Posted

技术标签:

【中文标题】(Python) 未显示多个引发的 ValueErrors【英文标题】:(Python) Multiple raised ValueErrors not displayed 【发布时间】:2021-01-09 09:56:10 【问题描述】:

我正在使用具有多个内置引发的 ValueErrors 的脚本,该脚本循环遍历文件夹中的某些文件。它会检查条件,如果发生这种情况,应该为每个循环的文件报告错误消息。

但是,它只显示一个文件的一个 ValueError 消息,而不是所有错误。它仍然为其他文件执行循环。例如,我有文件 a 和 b 都应该生成错误,但 python 只显示文件 a 的错误消息。我已经通过删除文件 a 来检查它,并且在运行脚本后它确实会为文件 b 生成一条错误消息

我的部分代码是

for f_name in os.listdir(path):
     if f_name.endswith('.xls'):
     ...
     if a < 0: 
          raise ValueError('error')
     else:
          xxx

有人知道如何显示所有错误吗?

【问题讨论】:

请注意,raise立即拆除堆栈,直到下一个匹配的 except:。您的代码仅引发一个错误,因为循环已被第一个异常中止。 【参考方案1】:

我认为你应该尝试except语句来找出哪个文件引发了异常。 使用这个。

try:
    if a < 0:
        raise ValueError('error')
    else:
        xxx
except ValueError:
    print(a) #this will print which file isn't satisfying the condition

【讨论】:

以上是关于(Python) 未显示多个引发的 ValueErrors的主要内容,如果未能解决你的问题,请参考以下文章

在 python inotify 中未引发 IN_Q_OVERFLOW 事件

AWS SAM CLI 全新安装引发错误 - dyld:未加载库:@executable_path/../.Python

python 这意味着无论何时引发未捕获的异常,我都会立即得知发生了什么(完全回溯)。

未应用字体未引发错误

python异常

如何找到引发“ NullReferenceException:'对象引用未设置为对象实例的方法'?”