koddla

Yazılımcıları bilgi ile güçlendirir.

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

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ı

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Back to top