私はJavaでプログラミングをしていましたが、コードがうまくいかないときに生成されるスタックトレースがかなり好きになっていましたが、Pythonで生成されたトレースが少し不足していると感じました。 Pythonのトレースは、次のようになります。一方でどのようにPythonでスタックトレースのようなJavaを生成するには?
java.lang.RuntimeException
at test.package.Example.c(Example.java:20)
at test.package.Example.b(Example.java:15)
at test.package.Example.a(Example.java:10)
を::
Traceback (most recent call last):
File "example.py", line 10, in <module>
a()
File "example.py", line 2, in a
b()
File "example.py", line 5, in b
c()
File "example.py", line 8, in c
raise Exception
Exception
これらのトレースの両方が、基本的に同じ情報を伝えながら、私は個人的にことを見つけるたとえば、Javaでのトレースは次のようになります。 Javaからのトレースは追跡が容易です。
Pythonがスタックトレースを印刷するための形式を変更する方法はありますか、それとも私のプログラムのルートにカスタム例外ハンドラを作成する必要がありますか?
具体的には、Python形式について特に気に入らない(変更したい)のですか? Pythonのフォーマットは、コードの違反行の実際の内容を表示しているので、Javaのフォーマットよりも多くの*情報を与えるように見えます。 – BrenBarn
@BrenBarn私には必要以上の情報が与えられているような気がします。私が大きなプログラムを書いているときには、スタックトレースに15個以上のエントリがあり、15個の余分な行があると、問題がどこにあるのかを正確に把握するのがずっと難しくなります。私は、常にそのコードを開いて自分自身で見ることができるので、行番号を持つだけで十分だと思います。文脈を奪われた1行のコードを持つことは、非常に有用ではありません。 –