读书人

UnboundLocalError有关问题

发布时间: 2012-09-07 10:38:15 作者: rapoo

UnboundLocalError问题

Python code
    #!/bin/python    def fn():        try:            a=0            b = open("1.py")            raise "11"  #这个异常不是必然发生,我这里只是假设            c = open("2.py")        except:            if b:                b.close()            if c:                c.close()    if __name__ == "__main__":       fn()

我有一段程序,运行过程中可能会抛异常,所以我想在except中,判断一下,如果对象存在则释放资源,但是会出现
UnboundLocalError: local variable 'c' referenced before assignment

请问我应该怎么改?

[解决办法]
Python code
def fn():    try:        a = 0        b, c = False, False        b = open('1.py')        c = open('2.py')    except:        if b:            b.close()        if c:            c.close()if __name__ == "__main__":   fn()
[解决办法]
C/C++ code
def fn():    a = b = False    try:        a=0        b = open("1.py")        raise "11"  #这个异常不是必然发生,我这里只是假设        c = open("2.py")    except:        if b:            b.close()        if c:            c.close()if __name__ == "__main__":   fn()
[解决办法]
你可以嵌套使用try...except...类似:
Python code
def fn():    try:        a=0        b = open("1.py")        raise "11"  #这个异常不是必然发生,我这里只是假设        c = open("2.py")    except:        try:            b.close()            c.close()        except:            passif __name__ == "__main__":    fn() 

读书人网 >perl python

热点推荐