You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ParseError异常无法被Except捕获的技术问题求助

XML解析时ParseError异常无法被捕获的问题解决

我是编程新手,写了一段代码用来提示用户输入目录和XML文件名,解析后判断文件是否格式良好。但遇到格式错误的XML时,程序直接报错终止,明明写了try-except块想捕获ET.ParseError异常,期望跳过错误后剩余代码正常执行,却没生效。

报错信息

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.")

问题原因与解决办法

你的代码逻辑本身没有问题,except ET.ParseError确实能捕获XML解析错误。之所以出现程序终止的情况,大概率是调试器的默认行为导致的:

  • 很多IDE(比如VS Code、PyCharm)在调试模式下,会在异常抛出时自动暂停执行,即使代码里有try-except块去捕获它。这时候你看到的报错是调试器的提示,而非程序真的未捕获异常。
  • 解决办法:
    1. 直接用命令行运行脚本:打开终端,执行python SimpleXMLParseExcept.py,此时异常会被正常捕获,程序会执行except块里的打印语句,不会终止。
    2. 调整IDE调试设置:以VS Code为例,打开调试面板的设置(齿轮图标),找到exceptionBreakpointFilters,把"Raise exceptions"的勾选去掉,这样调试时只有未被捕获的异常才会暂停。

验证方法

你可以手动创建一个格式错误的XML文件(比如故意写错闭合标签),用命令行运行脚本,输入对应的目录和文件名,就能看到程序正常输出异常提示,不会终止。

内容的提问来源于stack exchange,提问作者Trapper Leabo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 07:37:21