以下は私のコードです:
test = 'abc'
if True:
raise test + 'def'
これを実行すると、TypeError
が表示されます
TypeError: exceptions must be old-style classes or derived from BaseException, not str
では、どのような種類のtest
にすべきでしょうか?
発生する唯一の引数は、発生する例外を示します。これは、例外インスタンスまたは例外クラス(Exceptionから派生したクラス)でなければなりません。
これを試して:
test = 'abc'
if True:
raise Exception(test + 'def')
raise
a str
はできません。 Exception
sにできるのはraise
sだけです。
したがって、その文字列を使用して例外を構築し、それを発生させる方が良いでしょう。たとえば、次のことができます。
test = 'abc'
if True:
raise Exception(test + 'def')
OR
test = 'abc'
if True:
raise ValueError(test + 'def')
役立つことを願っています
例外であるべきです。
あなたは次のようなことをしたい:
raise RuntimeError(test + 'def')
Python 2.5以下では、例外として文字列を発生させることが許可されていたため、コードは機能します。これは非常に悪い決定であったため、2.6で削除されました。