PDA

Tam Sürümünü Görmek İçin : finally kullanımı


dkoksal
18/04/2007, 17:08
except:
print sys.exc_info()[1]
sys.exit()
finally:
conn.close()
dosya.close()
f.quit()


şeklinde bir kod yazdım fakat invalid syntax hatası alıyorum. Acaba except sonrasında finally kullanılamıyor mu diye şüphelerim hasıl oldu. finally satırından itibaren kodu açıklama satırı yaptığımda ise problemsiz olarak çalışıyor.


anov
18/04/2007, 17:13
try:
yok mu?

dkoksal
18/04/2007, 17:16
Olmamı hiç.

try:
# (1) baglanti kuruluyor
...

try:
yok mu?

anov
18/04/2007, 17:23
Bu yazdıklarına göre sadece boşlukların birbirini tutmama problemi olabilir gibi görünüyor ki, onun da ayrı bir exception u var zaten.

(Ben neden olduğunu anlayamamakla beraber, tahmin bile edemiyorum)

myavuzselim
18/04/2007, 17:50
catch'in icinde sys.exit() var.

Her ne kadar finally her zaman calisir desek de, bu durumda calismiyor demek ki.

myavuzselim
18/04/2007, 18:03
Pardon, sys.exit exception firlatarak calisiyormus, yani yakalanabilir veye sys.exit()'den sonraki finally calisir.

Python 2.5'den once except ile finally bir arada olmuyormus.

dkoksal
19/04/2007, 08:58
Yani herhangi bir try bloğunu önce except sonrasında da finally ile sonlandıramıyoruz anlamını mı çıkartmalıyım yazdıklarınızdan?

myavuzselim
19/04/2007, 12:32
Evet, http://docs.python.org/ref/try.html 'de yazana gore 2.5'den onceki versiyonlarda try..except..finally yok.

dkoksal
19/04/2007, 12:33
ok, benim kullandığım sürüm 2.4.1, dolayısıyla kullanımdan vazgeçiyorum, tşk.