2012-07-16 8 views

答えて

49

唯一の引数は、例外を発生させるのに役立ちます示しています。これは、例外インスタンスまたは例外クラス(Exceptionから派生したクラス)のいずれかでなければなりません。

はこれを試してみてください:

test = 'abc' 
if True: 
    raise Exception(test + 'def') 
14

これは例外です。それは例外のように文字列を上昇させたとして、その後、以下のPython 2.5とは

raise RuntimeError(test + 'def') 

は、あなたのコードは動作します:

はあなたのような何かをしたいです。これは非常に悪い決定で、2.6で削除されました。

+2

例外として文字列を高めるためにとても悪いですなぜあなたは説明してもらえますか? – BioGeek

+3

@BioGeek文字列例外に関する問題は、 'raise'と' except'の両方でリテラルが使用され、例外に追加情報を付加するためのOOメカニズムを提供せず、複数の例外タイプ。例外がクラスの前に言語に追加され、例外クラスが追加されたら文字列例外は下位互換性のためにのみ保持されました。彼らの削除は、(誤った)機能の削除のように、言語を単純化しました。 –

+0

この機能が最後にサポートされたバージョンについて言及してくれてありがとう。それが私を助けました。 – SpaceTrucker

32

raise a strとすることはできません。 Exception秒のみがraise dになります。

だから、その文字列で例外を構築し、それを上げる方がよいでしょう。たとえば、あなたができる:

test = 'abc' 
if True: 
    raise Exception(test + 'def') 

OR

test = 'abc' 
if True: 
    raise ValueError(test + 'def') 

希望調達する

+0

また、引数を指定しないでraiseすることもできません。 –

関連する問題