Форум сайта python.su
2
try:
with open('filename', 'r') as f:
for line in f:
print line,
except IOError:
print 'io error!'
Отредактировано (Фев. 17, 2011 14:20:25)
Офлайн
32
num8erкниги надо почитать тебе, см пример:
для ошибок есть “except:”
а “finally:” при успешном выполнении блока в try
вот книгу читай: http://www.python.ru/files/book-ods.pdf (особенно о блоке try - except - finally)
try:
print 'try 0/1',
a = 0/1
print 'ok'
finally:
print 'finally 0/1'
try:
print 'try 1/0'
a = 1/0
print 'ok'
finally:
print 'finally 1/0'
try 0/1 ok
finally 0/1
try 1/0
finally 1/0
Traceback (most recent call last): ....
Отредактировано (Фев. 17, 2011 15:26:44)
Офлайн
0
o7412369815963прошу прошения ))) видимо я не так понял трактовку finallynum8erкниги надо почитать тебе, см пример:
для ошибок есть “except:”
а “finally:” при успешном выполнении блока в try
вот книгу читай: http://www.python.ru/files/book-ods.pdf (особенно о блоке try - except - finally)результат:try:
print 'try 0/1',
a = 0/1
print 'ok'
finally:
print 'finally 0/1'
try:
print 'try 1/0'
a = 1/0
print 'ok'
finally:
print 'finally 1/0'finally выполнился 2 раза и при ошибке и безtry 0/1 ok
finally 0/1
try 1/0
finally 1/0
Traceback (most recent call last): ....
Офлайн
32
num8erего можно использовать например для закрытия файлов, или сетевых соединений, освобождения ресурсов - это все равно надо делать даже если где-то внутри возникла ошибка.
если уж так то получается что finally бесполезная вещь
Офлайн
0
всем спасибо за участие.
мне известно как работать с try/except/finally
я все же надеялся что функция open(…) позволяет проверять результат по-человечески. без изысканных извращений.
чем больше узнаю Питон, тем более укрепляюсь в мысли, что питонщики таки любители подобных извращение ;) не обижайтесь только. экспешены нужны и полезны, но не всегда и не везде =)
Офлайн
20
Как должен открываться файл, чтобы без извращений?
Офлайн
8
indusЧестно говоря, не вижу извращений. Почему файл не был открыт можно узнать очень просто
я все же надеялся что функция open(…) позволяет проверять результат по-человечески. без изысканных извращений.
try:
f = open(...)
except OSError, e:
if e.errno == errno.ENOENT: print "No such file or directory"
Офлайн
0
Soteric
ziro
на системном уровне посредством возращаемой ошибки/некорректного дескриптора. использование исключений для таких целей есть муветон в общем, т.к. это весьма дорогая штука для любой ОС. в любом случае, читая книжки я уже понял, что Питону в общем-то положить на такие “мелочи” =)
ПС. в тоже время не исключаю, что питоновские исключения не являются исключениями в классическом представлении, а есть некий высокоуровневый эрзац-реализация идеи ;)
Офлайн
14
Ээээ. Исключения питона не имеют никакого отношения к исключениям OS (прерываниям, по сути, переключающим контекст процесса в kernel и обратно, с размоткой С стека и прочими неприятностями).
Офлайн
0
Андрей Светлов
вы смешиваете исключения и прерывания.
Офлайн