在except子句中递减变量时是否有任何特殊行为?
sid
一直在递增,直到它首次进入异常子句,然后它在for
循环的剩余持续时间内保持相同的值。
105次尝试中有7次抛出异常
没有打印输出“Fehlercode:”,错误代码
这是我的代码:
for bid in range(bidStart, bidEnd + 1):
for syn in getSynsProBeitrag(bid):
try:
sid += 1
query = "INSERT INTO zuord (bid, hid, sid) VALUES(%s, %s, %s)"
cursor.execute(query, [bid, hid, sid])
query2 = "INSERT INTO synonyme (synonym) VALUE (%s)"
cursor.execute(query2, syn)
except MySQLdb.IntegrityError, message:
errorcode = message[0]
if errorcode == 1062:
sid -= 1
print sid
else:
print "Fehlercode:", errorcode
已解决:在query2抛出它的第一个异常之后,第一个查询也导致了一个(相同的)IntegrityError然后就像colleen所说的那样来回传递
答案 0 :(得分:1)
嗯,你在except子句中递减它,然后在try中递增它,所以它只是来回......如果它第一次失败,它将继续失败。
e.g。
try:
1
try:
1+1=2 ->fail->id-1=1
try:
1+1=2 ->fail->id-1=1
try:
1+1=2 ->fail->id-1=1
try:
1+1=2 ->fail->id-1=1
....
等
如果您试图跳过失败的ID,请不要减少它。
答案 1 :(得分:0)
在except子句中递减时没有任何特殊行为。
是不是因为同样的异常一直被抛出所以它不断减少?我注意到你只是在得到相同的错误代码时打印出来,你有没有得到“Fehlercode:errorcode”的打印输出?