2013-06-23 4 views
2

Я прочитал много источников об отладке try,exception,finally. Я понимаю, когда мы пытаемся использовать некоторые коды, может быть какое-то исключение. Но я не понимаю, почему иногда мы используем, наконец, когда у нас уже есть исключение?Почему иногда, наконец, используется для отладки?

+2

'finally' ** всегда ** выполнен. Иногда код после 'exception' не может быть выполнен. (Подумайте о ситуации, когда исключение выбрано * в * блоке' exception') – Maroun

ответ

2

Как указано в documentation, статья finally полезна для освобождения внешних ресурсов независимо от того, было ли использование успешным. Эти внешние ресурсы могут быть файлами или сетевыми соединениями, которые должны быть очищены при любых обстоятельствах.

Например:

try: 
    f = open("testfile", "w") 
    try: 
     f.write("This may not work!") 
    finally: 
     f.close() 
except IOError: 
    print("Error! Can't find file") 

Оператор f.close() всегда будет выполняться, так что даже если операция записи вызывает исключение, файл всегда будет закрыт в конце.