我对应该如何在try循环中使用try-catch块感到困惑。有什么我们应该遵循的标准。这些是一些示例代码。首选哪种方法?
MLSD
或者在使用多个for循环的情况下:
def func1():
try:
for i in range():
do_something()
except:
print(error)
def func1():
for i in range():
try:
do_something()
except:
print(error)
答案 0 :(得分:1)
取决于条件,如果您有多个for循环,并且内部循环中的函数引发错误,是否要继续为其他输入运行for循环,还是要完全停止for循环执行
如果您想继续运行循环,那么将try catch放入for循环中很有意义,如下所示,因此您仍然可以继续循环
与往常一样,您可以在任何一种尝试捕获逻辑中都拥有一个finally
条件,这可能会对您有所帮助!
def func4():
for i in range():
for j in range():
try:
do_something()
except:
print(error)
但是,如果您想停止循环以防万一发生异常,则将try-catch保持在循环之外很有意义
def func3():
try:
for i in range():
for j in range():
do_something()
except:
print(error)
第一种方法确实有一个警告,在这种情况下,如果循环运行了100次,并且抛出了10次异常,也许您每次都需要以不同的方式处理它或抑制它,并且不确定是否一旦有更多的循环运行,就会有更多的异常抛出。如果正在处理列表列表,并且某些子列表中包含不良元素,而您想忽略它们并保留res.t
,则可能在for循环中捕获异常是一个有益的示例。在第二种方法中,您只是在第一个异常处停止并放弃循环,如果循环的数据量很大,并且每次都需要重新启动循环,则这可能会很糟糕如果您想在看到第一个错误时更正数据集并再次运行它,将很有帮助!
答案 1 :(得分:1)
这取决于您的情况。
如果您需要完成成功的操作才能继续,则可以将try / catch 放在之外。
如果循环中的结果不会互相影响,则可以将try / catch 放入内部。
例如,从网站下载内容(错误时循环不会中断):
processing
更新游戏或应用程序(出错时中断循环):
contents = []
for i in range(100):
try:
contents.append(requests.get("http://example.com/%d.html" % i))
except:
print("page %d is not available.", i)