ParseError 未被 except 捕获

ParseError Not Being Caught With Except

提问人:Trapper Leabo 提问时间:3/29/2023 更新时间:3/29/2023 访问量:105

问:

我不熟悉编码,我遇到了一个我无法找到解决方案的问题。

我有一些代码提示用户选择一个目录和一个XML文件,它将解析该文件,并说明XML文件的格式是否正确。

但是,当 XML 格式不正确时,我收到错误,程序停止。

我期望发生的事情是,except 将捕获解析错误。

当我进行调试时,我可以继续处理错误,其余代码将执行。

这是错误:

Exception has occurred: ParseError
mismatched tag: line 306, column 14
  File "C:\Users\user\project\SimpleXMLParseExcept.py", line 10, in <module>
    tree = ET.parse(filepath)
xml.etree.ElementTree.ParseError: mismatched tag: line 306, column 14

这是我的代码:

import os
import xml.etree.ElementTree as ET

directory = input("Enter the directory path: ")
filename = input("Enter the file name in the directory: ")

filepath = os.path.join(directory, filename)

try:
    tree = ET.parse(filepath)
    print(f"{filename} is a well-formed XML.")
except ET.ParseError as e:
    print(f"{filename} is not a well-formed XML: {e}")
    # Add a print statement to see if the exception is being caught
    print("Exception caught by the try-except block.")
python xml xml解析 解析错误

评论

0赞 InSync 3/29/2023
我无法重现错误。您的 XML 文件的内容是什么?
1赞 TheLazyScripter 3/29/2023
尝试接受所有异常,并打印异常。我的猜测是不正确的filepath
0赞 Samwise 3/29/2023
这闻起来像是你运行了错误版本的代码。额外确保错误消息中的文件已保存,并且包含你发布的内容(并且与你在调试器中运行的文件相同)。
0赞 Trapper Leabo 3/29/2023
XML 文件的内容是用于 Niagara BAS 图形的晦涩的 .px 文件。我故意将其变形,删除了一个标签,以测试它是否会捕获变形。如果我给它一个好的 .px 文件,它会说它通过,如果我给它一个格式错误的文件,它会在我调试时停止并出现错误。我正在运行这个是 Python 版本 3.10.4 的 VSC,我试过了: 异常为 e: # 捕获所有异常 print(f“{filename} is not a well-formed XML: {e}”) input(“按 Enter 键继续克服错误...”)
0赞 Hermann12 4/9/2023
您的代码在 python 3.11.2 中按预期工作。

答: 暂无答案