ipython sadece ziyade kodda bunun yakalandı nerede göstermek yerine, yakalandı İstisna göstermek için herhangi bir yolu var mı?
Sen sys.excepthook
kullanabilirsiniz:
import sys
def exc_hook(type, value, traceback):
print type
sys.excepthook = exc_hook
sys
module documentation Gönderen:
sys.excepthook(type, value, traceback)
Bu fonksiyon sys.stderr belirli bir Traceback ve istisna dışında yazdırır. Bir özel duruma ve yakalanmamış zaman
, yorumlayıcı üç parametreyle, özel sınıfı, özel örneği ve bir traceback nesnesiyle sys.excepthook çağırır. Etkileşimli bir oturumda, bu denetimin istemciye döndürülmesinden hemen önce gerçekleşir; Python programında bu, programın çıkmasından hemen önce gerçekleşir. gibi üst düzey istisnaların işlenmesi, üç argüman fonksiyonunu sys.excepthook
'a atayarak özelleştirilebilir. sys.__excepthook__
Bu nesneler
sys.__displayhook__
program başlangıcında displayhook ve excepthook orijinal değerleri içerir. displayhook ve excepthook'un kırık nesnelerle değiştirilmeleri durumunda geri yüklenebilmesi için kaydedilirler.
Ayrıca IPython reference itibaren Plain
ayarlı --xmode
seçeneğiyle ipython başlayan deneyebilirsiniz: istisna raporlama için
$ ipython [options] files
--xmode=<modename>
Mod.
Geçerli modlar: Düz, Bağlam ve Verbose.
Düz: python'un normal geri tepme baskısına benzer.
Bağlam: geri izlemede her satırın etrafında 5 satırlık içerik kaynağı kodu yazdırır.
Ayrıntılı: Bağlam benzer, ancak ek olarak istisna (çok uzun eğer onların dizeleri kısaltarak) meydana geldiği değişkenler şu anda görünür yazdırır. Bu, , dizge gösterimi karmaşık hesaplamak için büyük bir veri yapısına sahip olursanız, çok yavaş olabilir. Bilgisayarınız cpu % 100'de bir süre donmuş gibi görünebilir. Bu durumda, Ctrl-C ile traceback'i iptal edebilirsiniz (belki birden fazla kez vurabilir).
Bazı kullanım örnekleri aşağıda verilmiştir.
--xmode=Plain
:
[ 19:55 [email protected] ~/SO/python ]$ ipython --xmode=Plain ipython-debugger-full-traceback-on-interactive-pdb.py
------------------------------------------------------------
Traceback (most recent call last):
File "ipython-debugger-full-traceback-on-interactive-pdb.py", line 2, in <module>
1/0
ZeroDivisionError: integer division or modulo by zero
--xmode=Context
:
[ 19:55 [email protected] ~/SO/python ]$ ipython --xmode=Context ipython-debugger-full-traceback-on-interactive-pdb.py
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
/home/jon/SO/python/ipython-debugger-full-traceback-on-interactive-pdb.py in <module>()
1
----> 2 #!/usr/bin/python
3 1/0
4
5
ZeroDivisionError: integer division or modulo by zero
--xmode=Verbose
:
her traceback hatlarında farkı dikkat --xmode=Plain
:
[ 19:55 [email protected] ~/SO/python ]$ ipython --xmode=Plain
In [1]: 1/0
------------------------------------------------------------
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
--xmode=Context
:
[ 20:03 [email protected] ~/SO/python ]$ ipython --xmode=Context
In [1]: 1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
/home/jon/SO/python/<ipython console> in <module>()
ZeroDivisionError: integer division or modulo by zero
--xmode=Verbose
:
Ve .py dosyası belirtmeden
[ 20:01 [email protected] ~/SO/python ]$ ipython --xmode=Verbose
In [1]: 1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
/home/jon/SO/python/<ipython console> in <module>()
ZeroDivisionError: integer division or modulo by zero
Using the Python debugger.
Bu, IPython 0'daki bir hatadır.11 - Geri tepme, hata ayıklayıcısını, başlamadan önce değil, ayrıldıktan sonra yazdırılır. 0.12 (Noel öncesi olmalıdır) için düzeltilecektir. –