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ı