Skip to main content
 首页 » 编程设计

python 在 try-except 中递减时行为不明确

2025年05月04日10soundcode

在 except 子句中递减变量时是否有任何特殊行为? sid 一直递增,直到它第一次进入异常子句,然后它在 for 循环的剩余时间内保持相同的值。

105 次尝试中有 7 次抛出异常

没有打印输出“Fehlercode:”,errorcode

这是我的代码:

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 然后它就像科琳说的那样来回走动

请您参考如下方法:

嗯,你在 except 子句中递减它,然后在 try 中递增它,所以它只是来回......如果它第一次失败,它将继续失败。

例如

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,请不要递减它。