-1
class MyException(Exception):
    def __str__(self):
        return self.args[0]


def DoWork():
    raise MyException("My hoverboard is full of eels")
    pass

if __name__ == '__main__':
    try:
        DoWork()
    except MyException as ex:
        print("This will get printed: " + str(ex)) #Line1
        print("This will not get printed and will raise exception: " + ex) #Line2

例外が1行目で明示的な変換を必要とするのはなぜですか。理想的には、2行目に示されているように機能するはずです。注:MyExceptionクラスからのstrの削除とstrの追加の両方を試しました。どちらも機能しませんでした。助けてください。

4

1 に答える 1

2

x + yを呼び出すことになるため、文字列に変換する必要があります。そのため、文字列と例外ではなく、2 つの文字列で動作するを呼び出す文字列はx.__add__(y)いつですか。Python の組み込みの演算子と型は通常、(たとえば JavaScript のように) 自動的に正しい型にしようとはしません。明示的に指定する必要があります。これは、たとえば で使用する必要がある場合と同じです。xstr.__add__int()x = 1 + int("12")

を使用したくない場合は、フォーマットstr()を使用できることに注意してください。%

print("This will also work: %s" % ex)
于 2012-09-29T06:59:26.220 に答える