将错误打印到屏幕上,但继续执行代码。

11

我有一些代码,它遍历一系列的URL。如果我的代码出现错误,因为其中一个URL不包含有效的JSON主体,我希望生成的错误被打印到屏幕上,但代码会继续进行下一个迭代。以下是我的一段简单代码:

for a in myurls:

    try:

        #mycode

    except Exception as exc:

        print traceback.format_exc()
        print exc
        pass

但是这会将错误打印到屏幕上并终止代码的执行。有没有办法让错误继续执行并进入下一次循环迭代呢?


5
你是否实际上导入了 traceback 模块?如果没有,在你的 try 代码块中会得到一个 NameError: name 'traceback' is not defined 错误。第二个异常将导致程序退出,但原因与你预期的完全不同。此外,这也是为什么我们总是要求提供完整的回溯信息:它可以告诉你是否发生了类似的情况。 - Kevin J. Chase
1个回答

15

只需将try-except放在您预期会发生异常的代码上方。该代码基本上位于循环内部。

for a in myurls:
    try:
        #mycode

    except Exception as exc:

        print traceback.format_exc()
        print exc

1
@gdogg371 Animesh的答案非常基本的python。重点是你的异常处理恰好发生在你指定try / except的级别。 - Marcus Müller
@animesh sharma抱歉,我已经修改了我的问题,因为我的代码目前的结构是按照animesh的答案来的。我打错了问题,请问有什么想法吗? - gdogg371
我猜代码应该可以正常工作。except块不应该使for循环中断。 - Animesh Sharma
@animesh Python3 的答案是什么? - Hugues

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接