Python TypeError:我的代码不支持的操作数类型?

Python TypeError:我的代码不支持的操作数类型?,python,python-3.4,Python,Python 3.4,我得到这个错误: Traceback (most recent call last): File "exceptionhandling.py", line 2, in <module> x = 5 + "ham" TypeError: unsupported operand type(s) for +: 'int' and 'str' 我正在学习异常处理。我知道5+“ham”会有错误,我不应该看到“不会看到这个”,但为什么我会出现这个错误?OP声明: 我正在学习异常

我得到这个错误:

Traceback (most recent call last):   
File "exceptionhandling.py", line 2, in <module>
     x = 5 + "ham" TypeError: unsupported operand type(s) for +: 'int' and 'str'
我正在学习异常处理。我知道
5+“ham”
会有错误,我不应该看到
“不会看到这个”
,但为什么我会出现这个错误?

OP声明:

我正在学习异常处理。我知道会有错误 对于5+火腿,我不应该看到“不会看到这个”,但为什么 我有这个错误吗

除非捕捉到正确的错误,否则代码将引发错误。在这种情况下,正确的错误是
TypeError

try:
    x = 5 + "ham"

except ZeroDivisionError:
    print("won't see this")
except TypeError:
    print("Hey, these are the wrong types!")
finally:
    print("The final word")
此代码的输出为:

Hey, these are the wrong types!
The final word
如果要捕获每个错误,请执行以下操作:

try:
    x = 5 + "ham"

except:
    print("Something went wrong.")
finally:
    print("The final word")
OP声明:

我正在学习异常处理。我知道会有错误 对于5+火腿,我不应该看到“不会看到这个”,但为什么 我有这个错误吗

除非捕捉到正确的错误,否则代码将引发错误。在这种情况下,正确的错误是
TypeError

try:
    x = 5 + "ham"

except ZeroDivisionError:
    print("won't see this")
except TypeError:
    print("Hey, these are the wrong types!")
finally:
    print("The final word")
此代码的输出为:

Hey, these are the wrong types!
The final word
如果要捕获每个错误,请执行以下操作:

try:
    x = 5 + "ham"

except:
    print("Something went wrong.")
finally:
    print("The final word")

你为什么试图捕捉一个
ZeroDivisionError
?你为什么试图捕捉一个
ZeroDivisionError
?你为什么要使用
ZeroDivisionError
?@PadraicCunningham说得对。我刚刚引用了OP的问题,以澄清OP的意图是尝试异常处理。谢谢!你是唯一一个意识到我为什么故意制造错误的人,谢谢你提供了一个更好的例子@PadraicCunningham ZeroDivision错误是试图显示它如何打印“不会看到这个”,因为它是错误的错误。@DamhanRichardson,如果你知道如何捕捉错误,为什么你没有捕捉到正确的错误,回溯显示了错误的确切类型?为什么要使用
ZeroDivisionError
?@padraiccnningham很好。我刚刚引用了OP的问题,以澄清OP的意图是尝试异常处理。谢谢!你是唯一一个意识到我为什么故意制造错误的人,谢谢你提供了一个更好的例子@PadraicCunningham ZeroDivision错误是试图显示它是如何打印“不会看到这个”的,因为它是错误的错误。@DamhanRichardson,如果你知道如何捕捉错误,为什么没有捕捉到正确的错误,回溯会告诉你它到底是什么类型的错误?