[英]what is the correct way to handle a caught exception and raise it outside of try block
[英]What is correct way to use try/catch block in case of for loop?
我对应该如何将try-catch块与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)
或在使用多个for循环的情况下:
def func3():
try:
for i in range():
for j in range():
do_something()
except:
print(error)
def func4():
for i in range():
for j in range():
try:
do_something()
except:
print(error)
根据条件,如果您有多个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循环中捕获异常是有益的一个示例可能是。
而在第二种方法中,您只是在第一个异常上停止并放弃循环,如果要循环的数据量很大,并且每次都需要重新启动循环,则这可能会很糟糕,但是如果您要循环,则可能会有所帮助您想在看到第一个错误时更正数据集,然后再次运行它!
这取决于您的情况。
如果需要完成成功操作才能继续,则可能需要将try / catch置于循环之外 。
如果循环中的结果不会互相影响,则可以将try / catch 放入循环中。
例如,从网站下载内容(错误时循环不会中断):
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)
更新游戏或应用程序(出错时中断循环):
updateList = ["File1.jpg", "File2.jpg"]
try:
for file in updateList:
res = requests.get("http://example.com/%s" % file)
except:
print("Update has failed, application cannot continue.")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.