たいのですが変更Pythonトレースバックオブジェクトが例外を送?

StackOverflow https://stackoverflow.com/questions/1603940

  •  05-07-2019
  •  | 
  •  

質問

ようにPythonの図書館利用サードパーティーを書く拡張のために当社のコア願います。

もっと知りたい場合は改造可能のトレースバックの揚する場合は例外でのスタックフレームの呼び出しのライブラリ関数の開発者のコードではなく、ラインの図書館を上げることは例外です。もあり少数のフレーム下部のスタックを含むへの参照機能使用時の最初の荷重をコードする思想を削除します。

よろしくお願のためのアドバイス!

役に立ちましたか?

解決

うな変化をトレースバック?の二つのことを要請することがでしていくことができるからです。

  1. 場合には例外からの図書館は開発者のコードと新しい例外は、その代わりに、独自のトレースバックされることとな翻弄.こうした例外は一般に取り扱う...場合あなただけの独自の例外をできmungeですべて削除し、"上"のフレームの実績例外な意味での最後のラインをトレースバックのないものの引き上げます。
  2. グレーのクラムシェル型クランプは、過去数のフレーム、請求することができるtracebacksを短縮すること...のようなトレースバック.print_exception()が多くなればなるほど、見た限定の"パラメータを使えるスキップの作品の応募がありました。

とはいえ、あるべきでなかなかできmungeのtracebacksます。がいいですか?場合は一部のラッパーコードのトップレベルのしきブレースバック、スライスパーツを取り出しまい、その機能を使用の"トレースバック"モジュールをフォーマット/印刷してから行ってください。

他のヒント

を除去することができ、上位のトレースバックで簡単に引き上げのtb_next要素をトレースバック:

except:
    ei = sys.exc_info()
    raise ei[0], ei[1], ei[2].tb_next

tb_nextはread_onlyの属性もないわからないの方法を教えてくものです。ることができるかもしれませスクリューの特性機構へのアクセスが可能となるようにしか見えない知っています。

取jinja2はこちら:

https://github.com/mitsuhiko/jinja2/blob/5b498453b5898257b2287f14ef6c363799f1405a/jinja2/debug.py

この美しくはないけれども、そうでない必要なものです。んですが、コピー-ペーストの例です。

ついに PEP-3134, 実施するにはpython3とができるタックの一例/トレースバックへ上ります。

こんなと同じことの修正のトレースバックがおもしろくするのもいいけどそれを伝える"ショートバージョン"を図書館利用者を有する"ロングバージョン"をご利用ください。

このコードが利用します。

でトレースバックおよび削除し、最初のファイルは表示されます。それを模擬するシミュレーションにPythonの挙動:

Traceback (most recent call last):

だけ表示された場合にトレースバックを含む複数ファイルです。こうしていればマイエクストラフレームにいなかった。

ここで私のコードを想定し、ある文字列 text:

try:
    exec(text)
except:
    # we want to format the exception as if no frame was on top.
    exp, val, tb = sys.exc_info()
    listing = traceback.format_exception(exp, val, tb)
    # remove the entry for the first frame
    del listing[1]
    files = [line for line in listing if line.startswith("  File")]
    if len(files) == 1:
        # only one file, remove the header.
        del listing[0]
    print("".join(listing), file=sys.stderr)
    sys.exit(1)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top