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

时间:2012-11-20 18:50:57

标签: python increment behavior except decrement

在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所说的那样来回传递

2 个答案:

答案 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”的打印输出?