Python NameError异常未按预期工作



当我运行此代码时,会弹出一个NameError回溯错误,即使它应该由异常处理。为什么?函数调用参数故意拼写错误。

filename_cats = "cats.txt"
filename_dogs = "dogs.txt"
def readlines(filename):
"""read lines from a text file"""
try:
with open(filename) as f:
lines = f.readlines()
string = ''
for line in lines:
string += line
except (NameError, FileNotFoundError):
print(f"The file {filename} was not found.")
else:
print(string)
readlines(filename_cat)

这是因为错误发生在这里:

👇
readlines(filename_cat) 👈
☝️

这里没有任何地方:

try:
with open(filename) as f:
lines = f.readlines()
string = ''
for line in lines:
string += line
except (NameError, FileNotFoundError):

try..except块只能捕获其内部实际发生的错误,而不能捕获之前或之后发生的任何错误

最新更新