VS Code运行Python的try-except时ValueError未被捕获,IDLE正常
解决VS Code中try-except无法捕获ValueError的问题
以下是几个排查和解决的方向:
核对Python解释器版本
VS Code默认可能使用虚拟环境或系统中其他版本的Python,和IDLE用的不一致。先在IDLE里运行import sys; print(sys.version)查看版本,再看VS Code左下角状态栏显示的Python版本,若不同,按Ctrl+Shift+P调出命令面板,输入Python: Select Interpreter选择和IDLE一致的版本。检查调试模式的异常设置
如果是用调试模式运行代码,VS Code的调试器可能会强制抛出已被捕获的异常。可以:- 点击调试面板的齿轮图标打开
launch.json,检查justMyCode字段是否设为true(设为false时调试器会追踪所有代码的异常,包括系统库); - 调试时,取消勾选调试控制台旁的「Break when exception is raised」选项,避免调试器拦截已捕获的异常。
- 点击调试面板的齿轮图标打开
确认代码完全一致
再仔细核对VS Code和IDLE中的最简代码,比如缩进是否正确、有没有拼写错误(比如把ValueError写成ValueErrorr)。最简测试代码可以用:try: int('abc') except ValueError: print("捕获到ValueError异常")更新或重置VS Code的Python插件
旧版本的Python插件可能存在异常处理的bug。打开扩展面板找到「Python」插件,点击更新到最新版本;如果更新后问题依旧,尝试禁用再重新启用插件,或者卸载后重装。排查环境差异
在VS Code的终端中运行pip list,对比IDLE终端的输出,看是否有第三方库修改了内置异常的行为。如果有可疑库,可以临时卸载测试。
内容的提问来源于stack exchange,提问作者JimJoe
相关产品推荐
相关产品推荐

