Python’da özel durumlar (exception) nasıl yazdırılır?

Yukarıdaki gibi bir except bloğundaki hatayı/özel durumu nasıl yazdırabiliriz? Bunun için en aşağıdaki gibi bir basit yöntem kullanabiliriz: Python 2.

try:
    bir takım kod parçası
except:
    print('oluşan hata.')

Yukarıdaki gibi bir except bloğundaki hatayı/özel durumu nasıl yazdırabiliriz?

Bunun için en aşağıdaki gibi bir basit yöntem kullanabiliriz:

Python 2.6 ve sonraki ve sonraki ve Python 3.x için:

except Exception as e: print(e)

Python 2.5 ve önceki sürümler için ise:

except Exception,e: print str(e)

tracebakc modülü

Öte yandan traceback modülü ile biçimlendirme ve yazdırma hatalarını bastırabiliriz. Örneğin aşağıdaki kod parçasına benzer bir durumu print_exc() ile yazdırırız:

import traceback

try:
    1/0
except Exception:
    traceback.print_exc()

Çıktı:

Traceback (most recent call last):
  File "C:\scripts\divide_by_zero.py", line 4, in <module>
    1/0
ZeroDivisionError: division by zero

Python 3: logging

print() işlevi yerine, özel durumları kaydetmek için daha esnek bir çözüm olan logging modülü de kullanılabilir. Modül, iletileri belirli bir log dosyasına kaydetme, zaman damgalarıyla kaydetme veya hatanın nerede gerçekleştiği hakkında ek bilgiler gibi birçok ekstra işlevsellik sunar. (Daha fazla bilgi için resmi belgelere göz atabilirsiniz.)

Bir özel durumu kaydetmek için logging.exception() fonksiyonunu kullanabiliriz:

import logging

try:
    1/0
except BaseException:
    logging.exception("An exception was thrown!")

Çıktı:

ERROR:root:An exception was thrown!
Traceback (most recent call last):
  File ".../Desktop/test.py", line 4, in <module>
    1/0
ZeroDivisionError: division by zero 

Notlar:

  • logging.exception() i̇şlevi yalnızca bir özel durum işleyicisinden çağrılmalıdır
  • Modül, bir günlük işleyicisinin içinde kullanılmamalıdır.

Alternatif log düzeyleri

Aşağıdaki örneklerde olduğu gibi exc_info=True anahtar sözcüğü ile özel durumu başka bir log seviyesinde günlüğe kaydetmek de mümkündür:

logging.debug("An exception was thrown!", exc_info=True)  #debug
logging.info("An exception was thrown!", exc_info=True)      #bilgi
logging.warning("An exception was thrown!", exc_info=True)#uyarı
Bu yazı topluluk tarafından oluşturuldu. Lisans bilgisine bakabilirsiniz. Yanlış veya eksik bilgileri düzenlemek için github üzerinden katkıda bulunabilirsiniz.

Kategoriler: Yazı, Python

Okumaya devam et!

Python’da __file__ değişkeni ne anlama geliyor/ ne yapıyor?

Python’daki bir dosyadan bir modül yüklendiğinde, __file__ bu dosyanın yoluna ayarlanır.

Python Lambda ne için kullanılır?

Lambda ifadelerinden bahsediyoruz: Lambda ifadeleri aslında oldukça faydalı.

Python Dictionary – Sözlük

Sözlük, Python’da Eşleme olarak da bilinen bir anahtar değer deposu örneğidir.

Generatorler Nedir

Generatorler, üreteç işlevleri (örneğin yield kullanarak) veya üreteç ifadeleri ((ifade for x in iterator) kullanarak) tarafından oluşturulan tembel yineleyicilerdir.

Yorum Gönderin

E-posta hesabınız yayımlanmayacak.

koddla
Tema Mundana by WowThemes.net.