0

パラメータを使用して実行される場合と実行されない場合がある CLI アプリケーションでdebug、例外をキャッチし、それを選択的に再スローしています。

try:
    doSomething()
except Exception as e:
    if debug==True:
        raise Exception(str(e))

興味深いことに、raise Exception()コード自体がこれをスローしています。

Traceback (most recent call last):
  File "./app.py", line 570, in getSomething
    raise Exception(str(e))
Exception: expected string or buffer

str(e)文字列を返さないのですか? おそらくそれが返されているとしか想像できなかったNoneので、(コードに見られるように)ジェネラルを試しExceptionてみましたが、それがNoneにならないことを願っています。eにキャストできないのはなぜstringですか?

4

2 に答える 2

4

例外メッセージを誤解していると思います。

あなたのdoSomethingでは、例外が発生しました。例外はexpected string or bufferです。次に、その文字列を使用して例外を再スローします。そして、あなたはこの例外をキャッチしません。そのため、インタープリターは停止してメッセージを出力します。

>>> try:
...     raise Exception('expected string or buffer')
... except Exception as e:
...     raise Exception(str(e))
... 
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
Exception: expected string or buffer
>>> 
于 2013-07-21T13:26:51.203 に答える