0

メソッドへのすべての呼び出しが try ブロックでラップされている、適切に構造化された OOP Python アプリケーションを考えてみましょう。ここで、このアプリケーションをデバッグしていて、実際に例外をスローしたいとします。デバッグするためだけに、すべてtry:の行を置き換えてその部分if True:をコメントアウトすることはほぼ不可能です。コードの特定の部分によってスローされた例外がプログラムの実行を停止し、例外情報を stdout に出力する必要があることを Python インタープリターに伝える方法はありますか?"""except:

Kubuntu Linux 上の Python 2.7.3 または 3.2.3。

4

3 に答える 3

6

「よく構造化された OOP Python アプリケーションを考えてみてください。メソッドへのすべての呼び出しが try ブロックでラップされています ...」

これは私にはうまく構成されていないように聞こえます。例外処理の基本原則の 1 つは、対処方法を知っている例外のみを処理することです。これは、一般的な「例外のみを使用しない」ステートメントの背後にある原動力です。

try:
   do_something()
except:   #BAD BAD BAD
   react_to_exception()

「コードの特定の部分によってスローされる」...コードの特定のセクションについて話しているのでしょうか? 単一のブロックの場合、いつでもリレイズできます:

try:
    do_something()
except ValueError as e:
    raise e  # or `raise` or `raise SomeOtherError() from e` in more modern pythons.
于 2013-06-10T13:32:16.603 に答える
2

これはデバッガーの仕事のように聞こえます。私はPyCharmのデバッガーにしか慣れていません。これを使用すると、例外に対して例外ブレークポイントを設定できます。

于 2013-06-10T13:32:39.660 に答える
1

あなたの質問を正しく理解していれば、デバッグ目的でスタック トレースが必要だと思います。そのような場合、いつでもどこでも traceback モジュールを使用できます。

import traceback

try:
    func()
except Exception,e:
    print traceback.format_exc()

またはデバッガを使用 - pdb

于 2013-06-10T13:31:22.577 に答える