您好,我有一个函数可以解析文件中的前 60 行,并且应该在存在完全空白的行时提醒用户。然而,这些可能发生在这 60 行中的任何位置,因此我希望脚本解析整个 60 行,主要是因为我需要其中几行的数据来进行错误报告。我们可能想知道这些错误将来会发生在哪里。我写了这个:def header_data(data): dictionary = {} datalen = len(data) itrcntr = 0 try: for line in data: itrcntr += 1 if line.isspace(): raise Exception('File has badly formatted header data line(s)') else: linesplit = line.rstrip().split(":") if len(linesplit) > 1: dictionary[linesplit[0]] = linesplit[1].strip() return dictionary except Exception as e: errmsg = str(e) if itrcntr == datalen: return (dictionary, errmsg) else: pass 有了这个函数,我希望如果它发现 itrcntr 不等于 datalen,它会通过并返回到 try 块并继续到下一行。但这并没有发生。相反,它会跳出函数并在函数调用者的下一行中继续。如何让它继续循环,直到到达循环末尾,然后返回字典以及错误消息?或者这不能通过 try catch 异常处理程序来完成吗?
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
除非你想捕获除 的情况以外的异常,否则line.isspace我根本不会使用块。try只需将您的错误收集在列表中,例如:
errors = []
for line in data:
itrcntr += 1
if line.isspace():
errors.append('File has badly formatted header data at line %d.' % itrcntr)
# then at the end:
if errors:
# do something about it...
慕妹3146593
TA贡献1820条经验 获得超9个赞
如果发生任何异常,try 子句将被跳过,而 except 子句将运行。
如果您在 Try 中的任何位置引发异常,则其他所有内容都将被跳过。因此,如果您希望循环继续,那么就不要使用 Try except。
只需收集所有错误消息然后将其返回即可。
添加回答
举报
0/150
提交
取消